2017-05-31 65 views
0

我在運行我的代碼時遇到問題,打開HTTP請求後我試圖檢索響應代碼,但程序停止運行在打印語句上 下面是我的代碼:我打電話時程序停止運行getResponseCode()

private static HttpURLConnection openHttpConnection(URL url, String method){ 
try { 
HttpURLConnection connection = null; 
connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod(method); 
connection.setRequestProperty("Content-Type", 
"application/json;charset=UTF-8"); 
connection.setRequestProperty("Accept", "application/json"); 
System.out.println(connection.getResponseCode()); 
} 
catch (Exception exception) { 
exception.printStackTrace(); 
} 

該程序停在最後一行,當我打開許多HTTP請求後,問題出現在彼此之後。 注意:當我調試相同的代碼時,它與配音一起使用,但不與運行。 此問題出現在8個HTTP請求之後。

請幫忙。謝謝。

+0

你說你的程序在8個請求後掛起。你在某個時候是否會關閉你的聯繫?他們真的關閉了嗎(在操作系統級別)?如果你的連接仍然是打開/掛起的,那麼服務器(無論你連接到什麼地方)的連接可能會耗盡...... – sruetti

回答

0

你把這些代碼行放在try/catch塊中嗎? 可能會引發異常,捕捉它以獲取堆棧跟蹤將有助於獲取信息。 此外,更多有關執行上下文的信息會更方便:這是什麼類型的應用程序,以及來自哪裏,依此類推。

+0

是的,我把它放在try/catch塊中,url作爲方法的參數給出,我更新了代碼上面..謝謝。 –

+0

在極少數情況下,沒有拋出異常,但是是一個Throwable。 解決方案可能是抓住它,但不推薦(https://stackoverflow.com/questions/6083248/is-it-a-bad-practice-to-catch-throwable)。 然後,您將獲得更多關於發生的事情的信息。恕我直言,你可以暫時捕捉它。 – Javert0

+0

我把Throwable塊,但問題仍然存在。 –

0
  • 如果你的程序,而不打印任何響應代碼停在最後一行(即JVM退出),異常必須已被getResponseCode拋出()。這個例外很可能會告訴你問題是什麼。作爲Javert0指出,你會發現此異常的位置取決於你的環境 - 最壞的情況下捕捉任何異常,自己打印...

  • 如果你的程序最後一行掛connection.getResponseCode()可能沒有得到迴應從服務器並等待超時。因爲在詢問響應代碼(connection.getResponseCode())之前,您沒有明確的connection.connect(),所以問題幾乎可以是任何事情:超時(無響應的服務器/網絡/ DNS/...),無效的結果,缺少權限,...

+0

我把catch塊,但沒有拋出那裏。 –

+0

你確定connection.getResponseCode()被調用嗎?你的代碼是否退出getResponseCode(),即退出JVM或掛起(等待無限期超時/等待)? – sruetti