Uploaded image for project: 'HttpComponents HttpClient'
  1. HttpComponents HttpClient
  2. HTTPCLIENT-2105

HttpClient5 makes post call with no body after 307 redirect

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.0.1
    • 5.0.2
    • HttpClient (async)
    • None

    Description

      I have switched from the Apache HttpAsyncClient 4 (4.1.4) library to the httpClient 5 (5.0.1)

      I have found that when I make a POST call with body and get back a 307, the subsequent call does NOT include the data body any more, but it does still contain the Content-Type and Content-Length so the server then hangs waiting to receive the rest of the request which never comes.

       
      I do not see anything like this while debugging in the HttpClient5 libs

      FROM: org.apache.http.impl.client.DefaultRedirectStrategy
      
          public HttpUriRequest getRedirect(HttpRequest request, HttpResponse response, HttpContext context) throws ProtocolException {
              URI uri = this.getLocationURI(request, response, context);
              String method = request.getRequestLine().getMethod();
              if (method.equalsIgnoreCase("HEAD")) {
                  return new HttpHead(uri);
              } else if (method.equalsIgnoreCase("GET")) {
                  return new HttpGet(uri);
              } else {
                  int status = response.getStatusLine().getStatusCode();
                  return (HttpUriRequest)(status != 307 && status != 308 ? new HttpGet(uri) : RequestBuilder.copy(request).setUri(uri).build());
              }
          }

      Here is an example from my logs

      >> POST /ws/v3/batch HTTP/1.1
      >> User-Agent: Apache-HttpAsyncClient/5.0.1 (Java/11.0.7)
      >> Content-Length: 1043
      >> Content-Type: application/json; charset=UTF-8
      >> Host: ORIGINAL_HOST:4443
      >> Connection: keep-alive
      2020-08-05T20:52:24,377Z DEBUG [httpclient-dispatch-1][HttpAsyncMainClientExec:97] - ex-00000001: produce request data
      2020-08-05T20:52:24,378Z DEBUG [httpclient-dispatch-1][HttpAsyncMainClientExec:109] - ex-00000001: produce request data, len 1043 bytes
      2020-08-05T20:52:24,379Z DEBUG [httpclient-dispatch-1][HttpAsyncMainClientExec:117] - ex-00000001: end of request data
      
      << HTTP/1.1 307 Temporary Redirect
      << Cache-Control: max-age=300
      << Location: https://NEW_HOST:4443/ws/v3/batch
      << X-Server-Response-Time: 40ms
      << X-Server-Chain: ORIGINAL_HOST
      << X-Server-Timestamp: Wed, 05 Aug 2020 20:52:24 GMT
      << Content-Length: 0
      
      >> POST /ws/v3/batch HTTP/1.1
      >> User-Agent: Apache-HttpAsyncClient/5.0.1 (Java/11.0.7)
      >> Content-Length: 1043
      >> Content-Type: application/json; charset=UTF-8
      >> Host: NEW_HOST:4443
      >> Connection: keep-alive
      2020-08-05T20:52:24,722Z DEBUG [httpclient-dispatch-2][HttpAsyncMainClientExec:97] - ex-00000001: produce request data
      2020-08-05T20:52:24,722Z DEBUG [httpclient-dispatch-2][HttpAsyncMainClientExec:117] - ex-00000001: end of request data
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            randymo Randymo
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: