Menu

#132 ClientProtocolException from invalid HTTP version

Release_3.1
open
nobody
None
5
2015-02-05
2013-05-20
Adam
No

Sometimes trying to call submit() will lead to a ClientProtocolException due to an invalid HTTP header:

java.lang.RuntimeException: org.apache.http.client.ClientProtocolException
    at com.gargoylesoftware.htmlunit.WebClient.download(WebClient.java:2233)
    at com.gargoylesoftware.htmlunit.html.HtmlForm.submit(HtmlForm.java:140)
    at com.gargoylesoftware.htmlunit.html.HtmlSubmitInput.doClickStateUpdate(HtmlSubmitInput.java:70)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1234)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1182)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1145)
    at net.sourceforge.jwebunit.htmlunit.HtmlUnitTestingEngineImpl.submit(HtmlUnitTestingEngineImpl.java:1525)
    at net.sourceforge.jwebunit.junit.WebTester.submit(WebTester.java:2535)
    at net.sourceforge.jwebunit.junit.JWebUnit.submit(JWebUnit.java:1980)

This seems to be caused by code trying to parse the HTTP version number seeing HTTP/1.1HTTP/1.1 200 OK:

Caused by: org.apache.http.ProtocolException: Invalid protocol minor version number: HTTP/1.1HTTP/1.1 200 OK
    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:256)
    at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289)
    at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191)
    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:712)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:517)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    ... 36 more
Caused by: org.apache.http.ParseException: Invalid protocol minor version number: HTTP/1.1HTTP/1.1 200 OK
    at org.apache.http.message.BasicLineParser.parseProtocolVersion(BasicLineParser.java:189)
    at org.apache.http.message.BasicLineParser.parseStatusLine(BasicLineParser.java:402)
    at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:112)
    at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62)
    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254)
    ... 44 more

I've seen this bug happen on URLs for which curl reports normal responses. I've seen it happen for HTTP 200s as well as other status codes.

Discussion


Log in to post a comment.

MongoDB Logo MongoDB