1

我在 LGE G2 设备上遇到 UrlConnection 类的问题。不知何故,相同的代码正在其他设备上运行。此外,当我将 URL 更改为另一个时,DL 似乎正在工作。因此,问题可能出在服务器部分。

我还使用 4.4.2 android 在 Galaxy SIV 上测试了相同 URL 的代码,似乎一切正常。

另外,我可以使用任何网络浏览器从同一 URL 下载文件...

这是堆栈跟踪:

04-17 12:17:35.681: W/System.err(10695): java.net.ProtocolException: Unexpected status line: HTTP/1.1 
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.RawHeaders.setStatusLine(RawHeaders.java:108)
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308)
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135)
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644)
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
04-17 12:17:35.681: W/System.err(10695):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:143)
04-17 12:17:35.681: W/System.err(10695):    at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:544)
04-17 12:17:35.681: W/System.err(10695):    at java.net.URLConnection.getContentLength(URLConnection.java:316)

代码:

URL url = new URL(resource);
URLConnection connection = url.openConnection();
connection.setConnectTimeout(TEST_TIMEOUT);
connection.setReadTimeout(TEST_TIMEOUT);

int fileSize = connection.getContentLength();

InputStream inputStream = connection.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(
                inputStream);

这是 UrlConnection 的标准用法。使用 HttpUrlConnection 或 HttpsUrlConnection 时也会发生同样的情况。正如我所说,这个错误只发生在 LGE G2 上。我在 Nexus 4、Xperia Z1 和 Galaxy SIV 上对其进行了测试,一切正常!BR, JDK

4

0 回答 0