開(kāi)心每一天1111
2019-12-26 13:55:02
我是android開(kāi)發(fā)的新手。我正在開(kāi)發(fā)一個(gè)android應(yīng)用程序,其中我向Web服務(wù)器發(fā)送請(qǐng)求并解析json對(duì)象。我經(jīng)常java.net.SocketTimeoutException: Connection timed out在與服務(wù)器通信時(shí)遇到異常。有時(shí)它會(huì)完美地工作而不會(huì)出現(xiàn)任何問(wèn)題。我知道這個(gè)問(wèn)題已經(jīng)問(wèn)過(guò)很多次了。但是我仍然沒(méi)有得到令人滿意的解決方案。我在下面發(fā)布了我的logcat和應(yīng)用程序服務(wù)器通信代碼。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(); } }}誰(shuí)能幫我找出解決方案?提前致謝....
3 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
我在網(wǎng)上搜索了很多,并且在閱讀了許多有關(guān)連接超時(shí)異常的文檔后,我了解到的是,防止SocketTimeoutException超出了我們的限制...一種有效的處理方法是定義連接超時(shí)并稍后處理通過(guò)使用try catch塊來(lái)實(shí)現(xiàn)。...希望這將對(duì)以后遇到相同問(wèn)題的任何人有所幫助。
HttpUrlConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(7000); //set the timeout in milliseconds

開(kāi)滿天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
如果要在localhost中測(cè)試服務(wù)器,則必須將Android設(shè)備連接到相同的本地網(wǎng)絡(luò)。然后,您的APP使用的服務(wù)器URL必須包含您的計(jì)算機(jī)IP地址,而不是“ localhost”掩碼。
添加回答
舉報(bào)
0/150
提交
取消