[英]How to get response body of a post request without escape sequences in Java?
我正在尝试使用以下代码将HttpResponse的响应主体转换为String:
HttpGet request = new HttpGet(url);
request.setHeader("Accept", "application/json");
response = client.execute(request);
EntityUtils.toString(response.getEntity(), standardCharsets.UTF_8.displayName());
将其转换为String后的预期响应如下:
{"errors": ["permission denied"]}
这段代码直到最近才运行良好。 但现在响应主体以某种方式被修改为:
{"errors":["1 error occurred:\n\t* permission denied\n\n"]}
我不明白如何将“1错误发生”消息插入到响应主体中,因为Postman中同一个调用的响应给了我适当的响应,即:
{"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。
看起来您正在使用Apache HttpClient,它不会以这种方式修改响应。 这绝对是服务器生成的响应。 检查Postman中的请求配置,看看是否有任何其他标头可能会改变服务器行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.