【问题标题】:EOFException getResponseCode() [duplicate]EOFException getResponseCode() [重复]
【发布时间】:2013-12-18 10:16:42
【问题描述】:

我有这段代码:

public static boolean checkIfURLExists(String targetUrl) {
        HttpURLConnection httpUrlConn;
        System.setProperty("http.keepAlive", "false");
        try {
            httpUrlConn = (HttpURLConnection) new URL(targetUrl)
                    .openConnection();
            httpUrlConn.setRequestMethod("HEAD");

            // Set timeouts in milliseconds
            httpUrlConn.setConnectTimeout(500);
            httpUrlConn.setReadTimeout(1000);

            // Print HTTP status code/message for your information.
            return (httpUrlConn.getResponseCode() == HttpURLConnection.HTTP_OK);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Removing the URL: " + targetUrl);
            return false;
        }
    }

wich 测试一个 URL 是否可以访问。我用不同的 URL 多次调用这段代码。但是,代码在这一行给了我一个 EOFException:

return (httpUrlConn.getResponseCode() == HttpURLConnection.HTTP_OK);

例外:

12-18 11:11:57.655: W/System.err(30198): java.io.EOFException
12-18 11:11:57.655: W/System.err(30198):    at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:206)
12-18 11:11:57.655: W/System.err(30198):    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:98)
12-18 11:11:57.665: W/System.err(30198):    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
12-18 11:11:57.665: W/System.err(30198):    at libcore.net.http.HttpEngine.initContentStream(HttpEngine.java:528)
12-18 11:11:57.665: W/System.err(30198):    at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:836)
12-18 11:11:57.665: W/System.err(30198):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
12-18 11:11:57.665: W/System.err(30198):    at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
12-18 11:11:57.665: W/System.err(30198):    at com.cofely.gdfsuez.XmlDataParseHelper.checkIfURLExists(XmlDataParseHelper.java:172)

等等。 有谁知道发生了什么,以及如何解决这个问题? 谢谢

【问题讨论】:

  • 您的超时时间太短了。为什么需要测试 URL 是否可达?
  • 这是一个 OpenVPN 应用程序。有些用户比其他用户拥有更多的权限。就像到达一些服务器一样。所以我不想给用户一个永远不会工作的链接。但我已经找到了解决方案

标签: java android exception eof


【解决方案1】:

哦,我刚刚找到了答案,这显然是较新版本的 android 中的错误。添加此行对我有用:

httpUrlConn.setRequestProperty( "Accept-Encoding", "" ); 

谢谢

【讨论】:

  • 非常感谢,这让我发疯了。
  • 不起作用!我试了3次。 -1
  • @Lesperanza 好吧,我认为在发布这篇文章时,较新的版本是 4.0,所以从逻辑上讲,它在 5.0 和 6.0 上是不一样的。除此之外,上面发布的错误代码还有多种原因。仅仅因为我的解决了这个并不意味着你也会这样做。它可能有不同的原因。你看,我的答案没有必要 -1。
  • 我有 4.4.2 Android 版本。现在有什么解决方案?
  • 遗憾的是,我不知道这个问题的所有解决方案。您必须自己继续寻找或在 StackOverflow 上提出问题
猜你喜欢
  • 2020-10-02
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多