如何获得 40x 响应的正文? [英] How to get the body of a 40x response?

查看:19
本文介绍了如何获得 40x 响应的正文?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码是

HttpClient client = new DefaultHttpClient();
URI uri = URIUtils.createURI(SCHEME, HOST, PORT, path, formatedParams, null);
HttpGet get = new HttpGet(uri);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = client.execute(get, responseHandler);

当我执行此代码并且响应状态为 400 时,在最后一行抛出错误并且我无法获取 responseBody 中应有的内容.如果我通过浏览器 (Chrome) 执行相同的请求,我可以看到响应内容.

When I execute this code and that the response status is 400, an error is thrown on the last line and I cannot get what should be inside responseBody. If I do the same request via a browser (Chrome), I can see the response contents.

我希望能够在我的 java 代码中看到响应正文.响应是 200 或 400.

I would like to be able to see the response body in my java code. Response being a 200 or a 400.

如果错误是

org.apache.http.client.HttpResponseException: Bad Request
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:68)
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:54)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1070)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1044)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1035)

推荐答案

看起来 BasicResponseHandler 不能处理 400.也许试试:

Looks like BasicResponseHandler can't handle 400. Maybe try:

  HttpResponse response = client.execute(get);
  InputStream inputStream = response.getEntity().getContent();
  // TODO Stream to String

这篇关于如何获得 40x 响应的正文?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆