在我这篇文章中《如何java实现调用外部接口(POST请求)》,曾报出这个错误,发现是因为EntityUtils.toString(HttpEntity)方法中操作的是流数据,流数据是一次性数据,所以同一个HttpEntity不能使用多次该方法
解决方案:先用EntityUtils.toByteArray(HttpEntity)获取到字节数组,然后转字符串,最后转json。例子如下:
byte[] byteArray = EntityUtils.toByteArray(res.getEntity());
JSONObject response = JSONObject.fromObject(new String(byteArray, "utf-8"));// 防止返回结果中文乱码
// 转成JSONObject 后就可以通过get方法拿到参数值
String message = (String) response.get("message");
{
"id": "xxx", // 上报成功时id才有数据
"code": "xxx", // 0代表上报成功,其他代表错误
"message": "xxx" // 无论如何都有数据
}
参考文章:
《使用HttpClient出现java.io.IOException: Attempted read from closed stream》