Hace Apache Commons HttpClient soporte GZIP?

Tiene la biblioteca de Apache Commons HttpClient soporte Gzip? Hemos querido utilizar habilitar la compresión gzip en nuestro servidor Apache para acelerar el cliente/servidor de comunicaciones (tenemos una página en php que le permite a nuestra aplicación Android para sincronizar archivos con el Servidor).

InformationsquelleAutor benstpierre | 2010-05-05

7 Kommentare

  1. 27

    Apache HttpClient 4.1 soporta la compresión de contenido de la caja junto con muchas otras características que antes eran considerados fuera de alcance.

    • ¿cómo puedo sacarlo de la caja?
    • En 4.5.3, sólo tiene que utilizar un cliente de por HttpClientBuilder.create().build(), y se encargará de todos los gzip de solicitud y respuesta de descompresión para usted.
  2. 17

    Si el servidor es capaz de proporcionar Gzip contenido, con Apache Http cliente 4.1 todo lo que necesitas es usar

    org.apache.http.impl.client.ContentEncodingHttpClient

    que es una subclase de DefaultHttpClient.

    Este cliente también agregar encabezados diciendo que acepta Gzip contenido.

    • En HttpClient 4.2.1, ContentEncodingHttpClient está en desuso; se recomienda a los usuarios utilizar el DecompressingHttpClient, consulte hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/…
    • también en desuso.
    • A partir de 4.3, HttpClientBuilder debe ser utilizado (en lugar de ContentEncodingHttpClient o DecompressingHttpClient).
    • Con el HttpClientBuilder, usted no tiene que llamar a cualquier métodos en particular en el generador para habilitar gzip? O ¿simplemente no llame disableContentCompression()?
    • No, la compresión se habilita automáticamente. He probado con 4.5.3 y se utiliza wireshark para capturar la solicitud de la respuesta: la «Accept-Encoding: gzip,deflate» encabezado fue añadido en la solicitud automáticamente, y la respuesta de contenido puede ser descomprime automáticamente.
  3. 8

    Que no tiene soporte para esta fuera de la caja, y parece poco probable que se agrega a HttpClient 3.x (ver más zorra de JIRA problema aquí). Sin embargo, usted puede hacer esto mediante la adición de la petición de encargo de los lectores y el manual de solicitud/respuesta de la secuencia de manejo, en capas en la parte superior de la biblioteca básica, pero es engorroso.

    Parece que usted puede hacer con HttpClient 4, pero no sin algún esfuerzo.

    Bastante mala calidad, si usted me pregunta, esto realmente debería ser más fácil de lo que es.

    • +1 para la entretenida lectura (!)
    • He abandonado toda esperanza de que HttpClient es que se mantengan por cualquier persona con un agarre en la realidad (como si el HttpClient 4 API no era prueba suficiente).
    • ¿hay algo mejor para usar en java?
  4. 4

    Desde 4.1, Apache HttpClients asas de solicitud y respuesta de compresión.

    • No es necesario comprimir la solicitud, no es necesario establecer ninguna «Accept-Encoding» en los encabezados de la solicitud.
    • Controla automáticamente la respuesta de descompresión así, no es necesario manejar la Descompresión de respuesta.
    • Hasta 4.3 se encarga de gzip y deflate. Usted puede comprobar ResponseContentEncoding api doc aquí.

    Sólo tiene que utilizar:

    HttpClients.custom()

    que utiliza:

    HttpClientBuilder.create()

    Si quieres comprobar en la biblioteca de goto HttpClientBuilder utiliza RequestAcceptEncoding & ResponseContentEncoding

    Se puede desactivar a través de «disableContentCompression()»

    HttpClient httpClient = HttpClients.custom()
                    .setConnectionManager(cm)
                    .disableContentCompression() //this disables compression
                    .build();

    Por favor, asegúrese de que si usted agregar cualquier interceptor se puede ignorar que, usarla con cuidado.

    HttpClient httpClient = HttpClients.custom()
                    .setConnectionManager(cm)
                    .setHttpProcessor(httpprocessor) //this interceptor can override your compression.
                    .build();
  5. 1

    Aquí está la muestra de la scala de código que usa java apache-http-biblioteca de cliente de

     def createCloseableHttpClient(): CloseableHttpClient = {
        val builder: HttpClientBuilder = HttpClientBuilder.create
        val closableClient = builder.build()
        closableClient
      }
    
      def postData(data: String): Unit = {
        val entity = EntityBuilder.create()
          .setText(data)
          .setContentType(ContentType.TEXT_PLAIN)
          .gzipCompress()
          .build()
        val post = new HttpPost(postURL + endPoint)
        post.setEntity(entity)
        post.setHeader("Content-Type", "application/gzip")
        val client = createCloseableHttpClient()
        client.execute(post)
        client.close()
      }
  6. 0

    No apoyo fuera de la caja, pero se puede transformar entidad de devolución de los HttpResponse sin comprimir en uno llamando a

    val entity = new GzipDecompressingEntity(response.getEntity)

    a continuación, proceder con entity.getContent como siempre.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea