这已在几个问题中提出,但我还没有看到真正的答案。我有执行 NetHttpRequest 以将图像发布到服务器的 Android 代码,但它通常会很快失败,如下所示:
unexpected end of stream java.io.IOException: unexpected end of stream
at libcore.net.http.FixedLengthOutputStream.close(FixedLengthOutputStream.java:58)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1009)
at com.test.MyActivity$ImageUploadTask.doInBackground(MyActivity.java:870)
at com.test.MyActivity$ImageUploadTask.doInBackground(MyActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
我不明白...为什么会这样失败?鉴于回溯,它让我相信它一定与 HTTP 库过早关闭连接有关,但我无法确定原因。大多数相关问题都有完全相同的问题(例如,从 Android 应用程序“意外结束流”将 jpeg 上传到 Google 云端硬盘),除非在每种情况下问题都没有得到解答,或者提问者发现了一些似乎可以为他们解决问题的奇怪解决方法(尽管他们很可能只是走运)。
我的上传代码也没有什么特别之处,只是一个创建 HttpRequest 并执行它的 AsyncTask。它在大多数情况下都可以正常工作,但其他时候却莫名其妙地失败了。是什么赋予了?