获取 httpclient 响应流的出错? 400 报错
public InputStream execute(HttpRequestBase httpRequestBase,Set<Integer> acceptStatus){ CloseableHttpResponse response = null; StatusLine status = null; try { response = httpClient.execute(httpRequestBase); status = response.getStatusLine(); HttpEntity entity = response.getEntity(); if (acceptStatus == null) { return entity.getContent(); }else { int statusCode = status.getStatusCode(); if (isAcceptStatus(acceptStatus, statusCode)) { return entity.getContent(); }else { throw new RuntimeException("请求出错"); } } }catch(ClientProtocolException e){ throw new RuntimeException("请求出错"); } catch (IOException e) { throw new RuntimeException("请求出错"); }finally { if(response != null){ try { response.close(); } catch (IOException e) { // output exception } } if(httpRequestBase != null ){ httpRequestBase.releaseConnection(); } } }
如上代码,如果是响应流则字节数比较少(如少于 100 kb),可以顺利执行的,如果获取的较多字节的响应流,会出现 socket closed exception。
问题是,如果获取完整的响应流??
可能是还没有读取完返回的数据socket就已经超时自动关闭了。你把httpClient的soTimeout设大点再试试呢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。