为了账号安全,请及时绑定邮箱和手机立即绑定

获取java.net.SocketTimeoutException:android中的连接超时

获取java.net.SocketTimeoutException:android中的连接超时

开心每一天1111 2019-12-26 13:55:02
我是android开发的新手。我正在开发一个android应用程序,其中我向Web服务器发送请求并解析json对象。我经常java.net.SocketTimeoutException: Connection timed out在与服务器通信时遇到异常。有时它会完美地工作而不会出现任何问题。我知道这个问题已经问过很多次了。但是我仍然没有得到令人满意的解决方案。我在下面发布了我的logcat和应用程序服务器通信代码。public JSONObject RequestWithHttpUrlConn(String _url, String param){    HttpURLConnection con = null;    URL url;    String response = "";    Scanner inStream = null;    PrintWriter out = null;    try {        url = new URL(_url);        con = (HttpURLConnection) url.openConnection();        con.setDoOutput(true);        con.setRequestMethod("POST");        if(param != null){            con.setFixedLengthStreamingMode(param.getBytes().length);        }        con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");        out = new PrintWriter(con.getOutputStream());        if(param != null){            out.print(param);        }        out.flush();        out.close();        inStream = new Scanner(con.getInputStream());        while(inStream.hasNextLine()){            response+=(inStream.nextLine());        }    } catch (MalformedURLException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } finally{        if(con != null){            con.disconnect();        }if(inStream != null){            inStream.close();        }if(out != null){            out.flush();            out.close();        }    }}谁能帮我找出解决方案?提前致谢....
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

我在网上搜索了很多,并且在阅读了许多有关连接超时异常的文档后,我了解到的是,防止SocketTimeoutException超出了我们的限制...一种有效的处理方法是定义连接超时并稍后处理通过使用try catch块来实现。...希望这将对以后遇到相同问题的任何人有所帮助。


HttpUrlConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(7000); //set the timeout in milliseconds


查看完整回答
反对 回复 2019-12-26
?
开满天机

TA贡献1786条经验 获得超13个赞

如果要在localhost中测试服务器,则必须将Android设备连接到相同的本地网络。然后,您的APP使用的服务器URL必须包含您的计算机IP地址,而不是“ localhost”掩码。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 1565 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信