san*_*oid 17 java apache-httpcomponents apache-httpclient-4.x
我一直遇到这种情况,我收回了一个错误的HTTP响应(比如400),但是无法查看HttpResponse对象中的HttpEntity.当我逐步使用调试器时,我可以看到实体有内容(长度> 0),我甚至可以查看内容,但我看到的只是一个数字数组(我想是ASCII码?)很有帮助.我将在实体上调用EntityUtils.toString(),但是我得到了一个异常 - IOException或某种"对象处于无效状态"异常.这真是令人沮丧!有没有办法以人类可读的形式获取这些内容?
这是我的代码:
protected JSONObject makeRequest(HttpRequestBase request) throws ClientProtocolException, IOException, JSONException, WebRequestBadStatusException {
HttpClient httpclient = new DefaultHttpClient();
try {
request.addHeader("Content-Type", "application/json");
request.addHeader("Authorization", "OAuth " + accessToken);
request.addHeader("X-PrettyPrint", "1");
HttpResponse response = httpclient.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode < 200 || statusCode >= 300) {
throw new WebRequestBadStatusException(statusCode);
}
HttpEntity entity = response.getEntity();
if (entity != null) {
return new JSONObject(EntityUtils.toString(entity));
} else {
return null;
}
} finally {
httpclient.getConnectionManager().shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
看看我抛出异常的位置?我想做的是吮吸HttpEntity的内容并将其置于异常中.
Ahm*_*eem 33
Appache已经为那个名为EntityUtils的类提供了一个Util类.
String responseXml = EntityUtils.toString(httpResponse.getEntity());
EntityUtils.consume(httpResponse.getEntity());
Run Code Online (Sandbox Code Playgroud)
JaV*_*Boy 21
这里有一些代码可以将实体视为字符串(假设您的请求contentType是html或类似的):
String inputLine ;
BufferedReader br = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
try {
while ((inputLine = br.readLine()) != null) {
System.out.println(inputLine);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
要启用人类可读的形式,您可以将 HttpEntity 转换为带有 UTF-8 代码的字符串
EntityUtils.toString(response.getEntity(), "UTF-8")
Run Code Online (Sandbox Code Playgroud)
这将为您提供 json 形式的响应参数,例如:
{ "error": { "errors": [ { "domain": "global", "reason": "forbidden", "message": "Forbidden" } ], "code": 403, "message": "Forbidden “ }}
希望这能解决这个问题。
| 归档时间: |
|
| 查看次数: |
43327 次 |
| 最近记录: |