【发布时间】: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