【问题标题】:Body of IF-statement not executed (HttpURLConnection)IF 语句的主体未执行 (HttpURLConnection)
【发布时间】:2013-03-15 03:10:14
【问题描述】:

IF 语句的主体永远不会被执行。这是为什么呢?

假设

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();
}

我是否需要将 == 替换为 HttpURLConnection 等效的 .equals()?还是我需要使用 HttpURLConnection 的状态码而不是响应码?

【问题讨论】:

  • 这似乎很好,因为我猜它是一个 int 值。
  • 您确认您确实收到了 200 OK 响应吗?您可能希望打印出响应代码值以进行调试。
  • 请添加else 条件并检查其是否进入该条件。
  • @chiragsaga 谢谢你,真不敢相信我忘了添加其他条件。这帮助我意识到捕获异常。

标签: java android if-statement httpurlconnection http-status-codes


【解决方案1】:

正文永远不会被执行,因为您的代码可能在 HTTP 调用上崩溃了。 确保此调用位于单独的线程中。 请参阅here 了解更多信息。

至于实际的 if 语句,看起来还不错,所以它可能是一个异常问题。

Tbh,今后请确保您提供更多信息,例如日志,并确保您已按照@paxdiablo 所述将代码抽象成片段,从而完成了充分的测试。

祝你好运!

【讨论】:

  • 谢谢,您说的完全正确。通过在我的 IF 语句中添加 else{} 并意识到我的日志中出现了错误,我的代码在 HTTP 调用中崩溃了。幸运的是,您的线程建议解决了这个问题。
【解决方案2】:

如果你改变:

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

你应该能够说出它为什么没有触发。

机会是,他们相等。

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多