[ 
https://issues.apache.org/jira/browse/HTTPCORE-495?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski resolved HTTPCORE-495.
----------------------------------------
       Resolution: Fixed
    Fix Version/s: 5.0-beta1

Please review and close.

Oleg

> Add Diagnostic Information to ProtocolException Message
> -------------------------------------------------------
>
>                 Key: HTTPCORE-495
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-495
>             Project: HttpComponents HttpCore
>          Issue Type: Improvement
>            Reporter: Nathan Reynolds
>            Priority: Minor
>             Fix For: 5.0-beta1
>
>
> DefaultHttpResponseParser.parseHead() can throw ProtocolException.  Please 
> add more diagnostic information in the exception message.  For example, add 
> the value of "i", "count" and why reject() returned true.  Please add the 
> contents of this.lineBuf and any other information.
> My program caught this exception and I am having a hard time to reproduce it. 
>  If I had more information in the exception message, then I would be able to 
> have a better understanding of why the exception was thrown and how to 
> reproduce the issue.
> *Exception:*
> org.apache.http.client.ClientProtocolException
>       at 
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:187)
>       at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
>    ...
> Caused by: org.apache.http.ProtocolException: The server failed to respond 
> with a valid HTTP response
>       at 
> org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:149)
>       at 
> org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
>       at 
> org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
>       at 
> org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
>       at 
> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
>       at 
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
>       at 
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
>       at 
> org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
>       at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
>       at 
> org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
>       at 
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
>       ... 38 more
> Here is the method.
> {quote}
>     @Override
>     protected HttpResponse parseHead(
>             final SessionInputBuffer sessionBuffer) throws IOException, 
> HttpException \{
>         //read out the HTTP status string
>         int count = 0;
>         ParserCursor cursor = null;
>         do \{
>             // clear the buffer
>             this.lineBuf.clear();
>             final int i = sessionBuffer.readLine(this.lineBuf);
>             if (i == -1 && count == 0) \{
>                 // The server just dropped connection on us
>                 throw new NoHttpResponseException("The target server failed 
> to respond");
>             }
>             cursor = new ParserCursor(0, this.lineBuf.length());
>             if (lineParser.hasProtocolVersion(this.lineBuf, cursor)) \{
>                 // Got one
>                 break;
>             } else if (i == -1 || reject(this.lineBuf, count)) \{
>                 // Giving up
>                 throw new ProtocolException("The server failed to respond 
> with a " +
>                         "valid HTTP response");
>             }
>             if (this.log.isDebugEnabled()) \{
>                 this.log.debug("Garbage in response: " + 
> this.lineBuf.toString());
>             }
>             count++;
>         } while(true);
>         //create the status line from the status string
>         final StatusLine statusline = 
> lineParser.parseStatusLine(this.lineBuf, cursor);
>         return this.responseFactory.newHttpResponse(statusline, null);
>     }
> {quote}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to