HttpClient解析数据获取丢失

发布于 2021-12-06 23:02:36 字数 574 浏览 816 评论 6

目前我有个httpClient解析url的代码,大部分情况下都正常,但是偶尔会出现下面的报错org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 35499; received: 18409

这个我大概知道是因为服务端发送的是35499字节内容,但是实际客户端只接收到18409字节内容,没接收完连接就关闭了,这种情况一般是什么原因引起的,有人知道么,或者是我需要在httpClient解析的时候加上什么属性设置?我有关闭连接的操作,是否可以判断接收完成再关闭连接的设置?

主要代码如下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

长安忆 2021-12-08 23:42:04

老兄解决了吗?求助啊!

感情旳空白 2021-12-08 23:36:44

打个比方,服务器处理耗时需要2秒,而客户端请求超时只有1.5秒,客户端在过了1.5后没有收到服务器返回数据就会判定超时关闭此次请求连接,不过这种情况客户端会报请求超时的异常。你那种情况我也说不准,可能是服务器异常主动关闭了这个请求,比如你服务器对数据发送后是否调用了数据输出流的close方法

兮颜 2021-12-08 23:30:38

回复
@BoXuan : 嗯,有可能,谢谢了哈

绝影如岚 2021-12-08 16:48:49

回复
不用客气,对你有帮助就行

回忆凄美了谁 2021-12-08 13:29:28

是有段代码设置了请求超时时间,意思是下面的5000设置的大点么,但是我好像是请求到了,数据已经在传输了,只是io太快关了而已,如果是请求超时过短,是不是应该是传输数据的过程都不会有才对?

public static HttpClient getHttpClient() {

HttpParams params = new BasicHttpParams();

params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);

int CONNECTION_TIMEOUT=5000;

params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); // 3000ms

return new DefaultHttpClient(cm, params);


贱贱哒 2021-12-08 04:17:39

htTpclient请求超时设置得太短??特别是用户量大的时候,服务器业务处理耗时增加

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文