我正在尝试使用以下代码将HttpResponse的响应主体转换为String:
HttpGet request = new HttpGet(url);
request.setHeader("Accept", "application/json");
response = client.execute(request);
EntityUtils.toString(response.getEntity(), standardCharsets.UTF_8.displayName());
将其转换为字符串后的预期响应如下:
{"errors": ["permission denied"]}
直到最近,此代码都可以正常工作。但是现在响应主体正在以某种方式进行修改:
{"errors":["1 error occurred:\n\t* permission denied\n\n"]}
我不明白“ 1错误发生”消息是如何插入到响应主体中的,因为邮递员中同一呼叫的响应给了我适当的响应,即:
{"errors": ["permission denied"]}
我已经彻底检查了代码,并确定没有手动插入“发生1个错误”消息。
这些是邮递员的回复标头:
cache-control →no-store
content-length →33
content-type →application/json
date →Thu, 30 May 2019 06:52:33 GMT
status →403
这些是HttpClient调用的响应标头:
Cache-Control: no-store
Content-Type: application/json
Date: Thu, 30 May 2019 09:06:21 GMT
Content-Length: 60
唯一的区别是状态代码没有被打印。但是通过response.getStatusLine().getStatusCode()
检查状态代码也会得到403。
答案 0 :(得分:0)
看起来您正在使用Apache HttpClient,它不会以这种方式修改响应。肯定是服务器生成的响应。在Postman中检查您的请求配置,以查看是否还有其他标头,这些标头可能会改变服务器的行为。