Android之通過HttpURLConnection.getResponseCode狀態代碼拋出異常的問題以及解決方案

來源:互聯網
上載者:User

標籤:code   線上   解決方案   thread   read   process   androi   des   getjson   

1.最近,在學習解析json資料的時候遇到一個錯誤資訊,錯誤資訊如所示:

 發現解析出來的資料為空白,錯誤資訊如所示,發現程式中的HttpUtils工具類的22行出現了錯誤和MainActivity類的onClick方法的52出現了錯誤,因此我去尋找了一下這兩個類報錯的所在行,看看是否代碼寫錯,因為我也是學習的,所以代碼寫錯也很正常。2.HttpUtils類的22行代碼如所示: 發現並沒有寫錯方法,再看下MainActivity類的onClick方法的52行,如所示: 發現這行代碼竟是調用上面的那個HttpUtils類的getJsonContent(url_path)方法,那我覺得應該是上面通過HttpURLConnection訪問網路請求可能出現錯誤,於是我上網尋找資料,經過測試這些代碼都沒問題。3.那麼問題出現在哪裡呢?其實我們找到了代碼報異常的地方,但是我們並沒有把完整列印在Log的異常資訊看全,我再次附上Log所列印的錯誤資訊,一看便明白了,如所示: 如所示,報錯的異常為Android.os.NetworkOnMainThreadException異常,意思是安卓作業系統的網路工作在主線程異常,就是在網路通訊中在主線程工作中的異常,所以必須在另一個線程工作,所以,上述的代碼沒問題,問題在於HttpUtils類的getJsonContent(url_path)方法時對網路進行操作不能在主線程裡進行調用,必須建立一個線程進行網路操作,因此,我們必須在MainActivity類的onClick()方法調用那個getJsonContent(url_path)方法裡用一個新線程來訪問,進行網路通訊。4.所以,我們開啟一個新線程,這個新線程專門來處理對訪問網路,進行網路通訊工作的那個方法。即使用多線程的方法,因此,MainActivity類中的那個onClick()方法中的52行可改為如所示,即可: 這樣有時還會報同樣的錯誤,此時就該線上程中利用Handle訊息機制進行處理。

Android之通過HttpURLConnection.getResponseCode狀態代碼拋出異常的問題以及解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.