开发者社区> 问答> 正文

HttpClient解析数据获取丢失?报错

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

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

主要代码如下

展开
收起
爱吃鱼的程序员 2020-06-08 21:02:11 1058 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

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

    publicstaticHttpClientgetHttpClient(){

    HttpParamsparams=newBasicHttpParams();
    params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);

    intCONNECTION_TIMEOUT=5000;
    params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,CONNECTION_TIMEOUT);//3000ms
    returnnewDefaultHttpClient(cm,params);

    回复<aclass='referer'target='_blank'>@594zzb:不用客气,对你有帮助就行回复<aclass='referer'target='_blank'>@BoXuan:嗯,有可能,谢谢了哈打个比方,服务器处理耗时需要2秒,而客户端请求超时只有1.5秒,客户端在过了1.5后没有收到服务器返回数据就会判定超时关闭此次请求连接,不过这种情况客户端会报请求超时的异常。你那种情况我也说不准,可能是服务器异常主动关闭了这个请求,比如你服务器对数据发送后是否调用了数据输出流的close方法

    老兄解决了吗?求助啊!

    2020-06-08 21:02:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像