On Sun, 2013-12-01 at 13:14 -1000, ARul wrote:
> Hi Oleg,
> 
> I was looking into BHttpConnectionBase#createOutputStream method. To change
> the default chunk size (2048), I believe the only way is to implement a
> custom http client connection and override createOuptputStream(). Here is
> what I have so far.
> 
>     public static class CustomManagedHttpClientConnection extends
> DefaultManagedHttpClientConnection {
>         private final int chunkSize;
> 
>         public CustomManagedHttpClientConnection(final String id, final int
> buffersize, final int chunkSize) {
>             super(id, buffersize);
>             this.chunkSize = chunkSize;
>         }
> 
>         @Override
>         protected OutputStream createOutputStream(long len,
> SessionOutputBuffer outbuffer) {
>             if (len == ContentLengthStrategy.CHUNKED) {
>                 return new ChunkedOutputStream(chunkSize, outbuffer);
>             } else if (len == ContentLengthStrategy.IDENTITY) {
>                 return new IdentityOutputStream(outbuffer);
>             } else {
>                 return new ContentLengthOutputStream(outbuffer, len);
>             }
>         }
>     }
> 
>     public static class CustomManagedHttpClientConnectionFactory extends
> ManagedHttpClientConnectionFactory {
> 
>         private final int chunkSize;
> 
>         public CustomManagedHttpClientConnectionFactory(int chunkSize) {
>             this.chunkSize = chunkSize;
>         }
> 
>         @Override
>         public ManagedHttpClientConnection create(HttpRoute route,
> ConnectionConfig config) {
>             final String id = "http-outgoing-" +
> Long.toString(COUNTER.getAndIncrement());
>             return new CustomManagedHttpClientConnection(id,
> config.getBufferSize(), chunkSize);
>         }
>     }
> 
> Usage:
> 
>         int chunkSize = 1024;
>         HttpConnectionFactory<HttpRoute, ManagedHttpClientConnection>
> connFactory = new CustomManagedHttpClientConnectionFactory(chunkSize);
>         PoolingHttpClientConnectionManager connManager = new
> PoolingHttpClientConnectionManager(connFactory);
>         CloseableHttpClient client = HttpClients.createMinimal(connManager);
> 
> Do you recommend a better approach? 

I cannot suggest anything better. 

> Is there a way to configure this
> per-request instead of client?
> 

Why would you want to do that in the first place?

Oleg



---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to