-2

IF語句的主體從未執行。爲什麼是這樣?IF語句的主體未執行(HttpURLConnection)

假設

String urlRequest = "http://stackoverflow.com/"; 

這裏是我的代碼:

try { 
     URL url= new URL(urlRequest); 
     HttpURLConnection foo = (HttpURLConnection) url.openConnection(); 

     if(foo.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      // SOME CODE HERE 
     } 

} catch(Exception e) { 
     e.printStackTrace(); 
} 

我需要與.equals()等效HttpURLConnection的更換==?或者我需要使用HttpURLConnection的狀態代碼而不是響應代碼?

+0

這似乎很好,因爲我猜它是一個int值。 – 2013-03-15 03:13:03

+1

你確認你確實收到200 OK響應嗎?您可能希望打印出用於調試目的的響應代碼值。 – Perception 2013-03-15 03:14:12

+1

請添加'else'條件並檢查它是否進入該條件。 – 2013-03-15 03:15:27

回答

1

正文永遠不會執行,因爲您的代碼可能會在HTTP調用中崩潰。 確保此調用位於單獨的線程中。 有關更多信息,請參閱here

至於實際的if語句,看起來很好,所以它可能是個例外問題。

Tbh,今後請確保您提供更多信息,例如日誌,並確保您通過將代碼抽象爲片段來完成足夠的測試,如@paxdiablo所述。

祝你好運!

+0

謝謝你,你是對的。我的代碼在HTTP調用中崩潰,如向我的IF語句添加else {}所示,並意識到在我的日誌中顯示了錯誤。幸運的是,你的線索建議解決了這個問題。 – androideka 2013-03-15 20:14:18

1

如果更改:

if(foo.getResponseCode() == HttpURLConnection.HTTP_OK) { 

成類似:

int xyzzy = foo.getResponseCode(); 
System.out.println ("xyzzy = " + xyzzy); 
System.out.println (" OK = " + HttpURLConnection.HTTP_OK); 
if(xyzzy == HttpURLConnection.HTTP_OK) { 

你應該能夠告訴它爲什麼不點火。

機會是,他們是不是相等。