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

HttpRequestInterceptor and HttpResponseInterceptor don't allow entity manipulation

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 5.0 Alpha2
    • None
    • None

    Description

      Examples show how to do GZIP compression in sync HttpClient ( https://hc.apache.org/httpcomponents-client-4.2.x/httpclient/examples/org/apache/http/examples/client/ClientGZipContentCompression.java), but even thought AsyncHttpClient supports registering the same HttpRequestInterceptor and HttpResponseInterceptor they can only modify the headers. Doing any modification of the entity, which is necessary to do compression ends up being ignored.

      In HttpRequestInterceptor, this is because A) BasicAsyncRequestProducer is registerd early in the lifecycle with a reference to the original request entity which it uses to write the content. B) The wrapping request entity passed to the interceptor doesn't pass calls to setEntity back to the request it's wrapping.

      In HttpResponseInterceptor, the entity of the HttpResponse is bypassed completely by BasicAsyncResponseConsumer.

      This means clients of AsyncHttpClient have no way to intercept the message.

      My request is that there needs to be a way to intercept and manipulate the request bytes in/out so that compression can be implemented.

      Attachments

        Activity

          People

            Unassigned Unassigned
            szetheli Sven Zethelius
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: