-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) { 

你应该能够告诉它为什么不点火。

机会是,他们是不是相等。