2013-02-27 8 views
1

Мой кодКак получить тело ответа 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), я вижу содержимое ответа.

Я хочу, чтобы увидеть тело ответа в моем java-коде. Ответ будучи 200 или 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)
+0

Плохой запрос является сервером говоря, что ему не нравится что-то в вашем ПОЛУЧЕНИИ. Вероятно, что-то не указано в запросе GET. – araknoid

ответ

3

Похоже BasicResponseHandler не может справиться с 400. Может попробовать:

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

Действительно, он не может: «Если код ответа был = 300, тело ответа расходуется и вызывается исключение HttpResponseException.» Http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org /apache/http/impl/client/BasicResponseHandler.html – n1ckolas

+0

большое спасибо вам обоим. – oldergod