我想知道在Android中,使用HttpUrlConnection进行POST请求是否存在已知问题。我们在从Android客户端进行POST请求时会出现间歇性的EOFExceptions错误。重试相同的请求最终会成功。以下是一个示例堆栈跟踪:
java.io.EOFException
at libcore.io.Streams.readAsciiLine(Streams.java:203)
at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:579)
at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:827)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
有很多类似的错误报告和帖子提交到 Stack Overflow,但我无法理解是否真的存在问题,如果有的话,受影响的 Android 版本是哪些以及提出的修复/解决方法是什么。
以下是我所指的一些类似报告:
- Android HttpsUrlConnection eofexception
- Android HttpURLConnection throwing EOFException
- EOFException and FileNotFoundException in HttpURLConnection getInputStream()
- https://code.google.com/p/google-http-java-client/issues/detail?id=213
- https://code.google.com/p/android/issues/detail?id=29509
- https://code.google.com/p/google-http-java-client/issues/detail?id=230
- https://code.google.com/p/android/issues/detail?id=41576
这里有一个可能的 Android 框架修复方案:
我知道,早期的 Froyo 中存在连接池中的错误连接问题,但这些问题仅在新的 ICS+ 设备上出现。如果后来的设备有问题,我会期望官方的 Android 文档中提到这个问题。