我正在使用使用okhttp的HttpsURLConnection,每次我使用PUT并发送大约5KB的有效载荷时,它都会发送它而没有任何错误;然而,当我发送超过10KB的更大有效载荷时,我会收到以下错误:
W / System.err:java.net.ProtocolException:意外的流结束
W / System.err:at com.android.okhttp.internal.http.HttpConnection $ FixedLengthSink.close(HttpConnection.java:314) W / System.err:at com.android.okhttp.okio.RealBufferedSink.close(RealBufferedSink.java:241) W / System.err:at com.android.okhttp.okio.RealBufferedSink $ 1.close(RealBufferedSink.java:209) W / System.err:at java.io.FilterOutputStream.close(FilterOutputStream.java:67)
W / System.err:at com.mercadolibre.android.sdk.internal.HttpPut.performOperationBeforeConnect(HttpPut.java:52) W / System.err:at com.mercadolibre.android.sdk.internal.HttpOperation.execute(HttpOperation.java:100) W / System.err:at com.mercadolibre.android.sdk.internal.HttpOperation.execute(HttpOperation.java:74) W / System.err:at com.mercadolibre.android.sdk.Meli.put(Meli.java:534)
W / System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) W / System.err:at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588) W / System.err:在java.lang.Thread.run(Thread.java:818)
在重试发送它时,它最终会起作用,有时需要多达5次重试,这表明有效负载没有损坏,也没有任何连接错误。
有什么可能导致它的想法吗?我已经查看了库,并在写入后调用了flush()和close(),因此Sink不应该有任何大小错误。另外我尝试为连接设置fixedsize以使用我的有效负载的长度,但似乎没有工作。
提前谢谢。
答案 0 :(得分:2)
当您的内容长度因您实际编写的数据长度而异常发生时,会发生此错误。你是如何计算内容长度的?