Android HttpsUrlConnection eofexception

标签 android httpurlconnection eofexception

我有一个问题,当我尝试读取任何输入时,我的 HttpsURLConnection 会抛出 EOFException。该代码适用于某些网络调用,但在其他网络调用上失败。如果我尝试从连接中读取任何内容,则会因上述错误而失败。

例子:

urlConnect.getResponseCode() // will throw error
urlConnect.getResponseMessage() // will throw error
BufferedInputStream in = new BufferedInputStream(urlConnect.getInputStream()); //will throw error

这是每个的堆栈跟踪:

获取响应:

03-14 09:49:18.547: W/System.err(6270): java.io.EOFException
03-14 09:49:18.547: W/System.err(6270):     at libcore.io.Streams.readAsciiLine(Streams.java:203)
03-14 09:49:18.547: W/System.err(6270):     at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:573)
03-14 09:49:18.547: W/System.err(6270):     at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821)
03-14 09:49:18.547: W/System.err(6270):     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
03-14 09:49:18.547: W/System.err(6270):     at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495)
03-14 09:49:18.547: W/System.err(6270):     at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)

缓冲输入流:

03-14 09:39:14.077: W/System.err(5935): java.io.EOFException
03-14 09:39:14.077: W/System.err(5935):     at libcore.io.Streams.readAsciiLine(Streams.java:203)
03-14 09:39:14.077: W/System.err(5935):     at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:573)
03-14 09:39:14.077: W/System.err(5935):     at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821)
03-14 09:39:14.077: W/System.err(5935):     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
03-14 09:50:46.547: W/System.err(6476):     at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
03-14 09:50:46.547: W/System.err(6476):     at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)

感谢您的帮助,

瑞克

编辑 我找到了答案:

这不是一个有据可查的答案。它出现在一些较新版本的 android 中,有一个回收 url 连接的错误。为了解决这个问题(尽管可能存在一些性能问题),我需要添加:

if (Build.VERSION.SDK != null
&& Build.VERSION.SDK_INT > 13) {
urlConnect.setRequestProperty("Connection", "close");
}

谢谢!

瑞克

最佳答案

有人要求我回答我自己的问题而不是编辑。所以这里又是一个答案。

这不是一个有据可查的答案。它出现在一些较新版本的 android 中,有一个回收 url 连接的错误。为了解决这个问题(尽管可能存在一些性能问题),我需要添加:

if (Build.VERSION.SDK != null && Build.VERSION.SDK_INT > 13) {
    urlConnect.setRequestProperty("Connection", "close");
}

关于Android HttpsUrlConnection eofexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15411213/

相关文章:

android - 如何在某些情况下启动 android 应用程序中的第一个 Activity ?

Android:HttpURLConnection 抛出 EOFException

java - 从 WiFi 连接切换到 3g 会导致连接挂起?

java - 无法使用 Apache POI 写入和保存 XLSM 文件

java websocket EOFException发生

java - 在java类中获取后退点击的句柄

android - 减少gradle包装器的构建时间

java - Android 上的摘要获取 401

Java:防止 Socket DataInputStream 抛出 EOFException

android - 以编程方式连接到 Android Q 中的 Wifi