hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Kalnichevski (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1756) Response Body on response codes over 300 should not be ignored
Date Fri, 15 Jul 2016 08:18:20 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1756?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15379006#comment-15379006
] 

Oleg Kalnichevski commented on HTTPCLIENT-1756:
-----------------------------------------------

Sounds reasonable to me. If we are to choose the first option one thing I would certainly
suggest doing is limiting the length of the message to something like 256 characters in order
to avoid stack traces with megabytes of junk printed to console or logged in the log file.

Oleg

> Response Body on response codes over 300 should not be ignored
> --------------------------------------------------------------
>
>                 Key: HTTPCLIENT-1756
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1756
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>          Components: HttpClient
>    Affects Versions: 4.5.2
>            Reporter: Michael Peter Gower
>            Priority: Minor
>
> Hello.  This is my first time posting an issue to this project.  I've done my best to
be helpful.
> Many modern RESTful APIs (e.g. Amazon Web Services) will return a generic status description
(e.g. "Bad Request") and details in the body of the response on an error (e.g. code 400).
 
> However the org.apache.http.client.fluent.Response.returnContent() ignores the body (content)
on a return code of over or equal to 300, causing the debugging information to be lost.  This
leads to generic exception messages.
> A possible solution would be to include the body in the exception string, as demonstrated
in the below ResponseHandler.
>     protected static class FaultTolerantContentResponseHandler
>             extends ContentResponseHandler {
>         @Override
>         public Content handleResponse(final HttpResponse response)
>                 throws HttpResponseException, IOException {
>             final StatusLine statusLine = response.getStatusLine();
>             final HttpEntity entity = response.getEntity();
>             Content content = entity == null ? null : handleEntity(entity);
>             if (statusLine.getStatusCode() >= 300) {
>                 String message = statusLine.getReasonPhrase();
>                 if (content != null) {
>                     message += ", body was " + content.asString();
>                 }
>                 throw new HttpResponseException(statusLine.getStatusCode(),
>                         message);
>             }
>             return content;
>         }
>     }
> Alternatives would be to create a new subclass of HttpResponseException that would have
an additional getErrorContent() method to preserve backwards compatibility.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message