大型有效负载OkHTTP上的意外结束流

时间:2017-06-10 06:55:11

标签: java android multithreading okhttp httpsurlconnection

我正在使用使用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以使用我的有效负载的长度,但似乎没有工作。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

当您的内容长度因您实际编写的数据长度而异常发生时,会发生此错误。你是如何计算内容长度的?