我是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
开满天机
TA贡献1786条经验 获得超12个赞
如果要在localhost中测试服务器,则必须将Android设备连接到相同的本地网络。然后,您的APP使用的服务器URL必须包含您的计算机IP地址,而不是“ localhost”掩码。
添加回答
举报
0/150
提交
取消