org.apache.http.ConnectionClosedException: Premature end of chunk coded message body: closing chunk expected

偶尔善良 提交于 2019-12-10 13:18:15

问题


I am trying out RestAssured & wrote the following statements -

String URL = "http://XXXXXXXX";
Response result = given().
            header("Authorization","Basic xxxx").
            contentType("application/json").
            when().
            get(url);
JsonPath jp = new JsonPath(result.asString());

On the last statement, I am receiving the following exception :

org.apache.http.ConnectionClosedException: Premature end of chunk coded message body: closing chunk expected

The headers returned in my response are :

Content-Type → application/json; qs=1 Date → Tue, 10 Nov 2015 02:58:47 GMT Transfer-Encoding → chunked

Could anyone guide me on resolving this exception & point me out if I am missing anything or any in-correct implementation.


回答1:


Perhaps you can try fiddling around with the connection config? For example:

given().config(RestAssured.config().connectionConfig(connectionConfig().closeIdleConnectionsAfterEachResponse())). ..



回答2:


I had a similar issue that wasn't related to rest-assured, but this was the first result Google found so I'm posting my answer here, in case other's face the same issue.

For me, the problem was (as ConnectionClosedException clearly states) closing the connection before reading the response. Something along the lines of:

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("http://localhost/");
CloseableHttpResponse response = httpclient.execute(httpget);

try {
    doSomthing();
} finally {
    response.close();
}
HttpEntity entity = response.getEntity();
InputStream instream = entity.getContent(); // Response already closed. This won't work!

The Fix is obvious. Arrange the code so that the response isn't used after closing it:

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("http://localhost/");
CloseableHttpResponse response = httpclient.execute(httpget);

try {
    doSomthing();
    HttpEntity entity = response.getEntity();
    InputStream instream = entity.getContent(); // OK
} finally {
    response.close();
}



来源:https://stackoverflow.com/questions/33633549/org-apache-http-connectionclosedexception-premature-end-of-chunk-coded-message

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!