使用HttpClient出现java.io.IOException: Attempted read from closed stream

问题描述:

使用httpClient时候,出现java.io.IOException: Attempted read from closed stream.

原始代码:

 1     public static String postJosn(String url, String jsonString) throws Exception {
 2 
 3         SSLContext sslContext = SSLContexts.custom().useTLS().build();
 4         SSLConnectionSocketFactory f = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1.2" }, null,
 5                 null);
 6         CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(f).build();
 7         // 设置请求超时时间 15秒
 8         //client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);
 9         HttpPost myPost = new HttpPost(url);
10         myPost.setHeader(HTTP.CONTENT_TYPE, "application/json;charset=utf-8");
11         myPost.setHeader("charset", "utf-8");
12 
13         StringEntity s = new StringEntity(jsonString, "utf-8");
14         s.setContentEncoding("UTF-8");
15         s.setContentType("application/json;charset=utf-8");
16         myPost.addHeader("Content-Type", "application/json;charset=utf-8");
17         myPost.setEntity(s);
18 
19         HttpResponse res = client.execute(myPost);
20         HttpEntity entity = res.getEntity();
21         //myPost.releaseConnection();
22         log.info(EntityUtils.toString(entity, "utf-8"));;
23         return EntityUtils.toString(entity, "utf-8");
24     }

 

原因分析:

EntityUtils.toString(HttpEntity entity, String defaultCharset)方法中操作的是流数据,流数据是一次性数据所以同一个HttpEntity不能使用多次该方法.

源码:

 

转载于:https://www.cnblogs.com/cocoxu1992/p/10485882.html

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值