Thanks olegk, Based on your input and help I created below classes and
started to test it out.
Now I am able to control the size of the chunk and disable caching with 0
size.

How do I use these classes with connection pooling classes. 
I am only able to use with HttpRequestExecutor as shown below code, I need
help to know if it can be coded differently or you can point me to the right
examples which use HttpClientConnection class.

InputStream is = (InputStream) request.getInputStream();
                BasicHttpParams bhttp_params = new BasicHttpParams();
                 HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
                HttpContext context = new BasicHttpContext(null);
           
                HttpHost host = new HttpHost("abcd.efgh.ijk.net",80);
                        MyHttpClientConnection conn = new 
MyHttpClientConnection();
                        conn.setChunkSize(0);
                         BasicHttpProcessor httpproc = new BasicHttpProcessor();
                         context.setAttribute(ExecutionContext.HTTP_CONNECTION, 
conn);
                                
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
                         httpproc.addInterceptor(new RequestContent());
                        httpproc.addInterceptor(new RequestTargetHost());
                        httpproc.addInterceptor(new RequestConnControl());
                        httpproc.addInterceptor(new RequestUserAgent());
                        if (!conn.isOpen())
                        {
                                Socket socket;
                                try {
                                        socket = new Socket(host.getHostName(), 
host.getPort());
                                        conn.bind(socket,bhttp_params);
                                } catch (UnknownHostException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                
                        }
                
                        BasicHttpEntityEnclosingRequest bhttp_req = new
BasicHttpEntityEnclosingRequest("POST","/localbusinesssearch/rsa");
                         InputStreamEntity is_entity = new 
InputStreamEntity(is, -1);
                          
                          is_entity.setContentType("application/octet-stream");
                            is_entity.setChunked(true);
                            bhttp_req.setEntity(is_entity);
                            try {
                                        httpexecutor.preProcess(bhttp_req, 
httpproc, context);
                                        HttpResponse http_resp = 
httpexecutor.execute(bhttp_req, conn,
context);
                                           
                                           http_resp.setParams(bhttp_params);
                                            httpexecutor.postProcess(http_resp, 
httpproc, context);
                                            System.out.println("<< Response: " 
+ http_resp.getStatusLine());
                                            System.out.println("<< Response: " +
Arrays.toString(http_resp.getAllHeaders()));
                                            
System.out.println(EntityUtils.toString(http_resp.getEntity()));
                                } catch (HttpException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }


public class MyHttpClientConnection extends DefaultHttpClientConnection
{
    MyEntitySerializer myEntitySerializer;
        public MyHttpClientConnection()
        {
                super();
                myEntitySerializer.setChunkSize(0);
                
        }
        
        public void setChunkSize(int size)
        {
                myEntitySerializer.setChunkSize(size);
        }
    
        @Override 
    protected EntitySerializer createEntitySerializer() { 
                System.out.println("create my entity serializer");
                myEntitySerializer = new MyEntitySerializer(new
StrictContentLengthStrategy());
        return myEntitySerializer;
        } 

        

}

public class MyEntitySerializer extends EntitySerializer {
        private ContentLengthStrategy lenStrategy;
        private int chunkSize;
        private int count = 0;
        
        public MyEntitySerializer(ContentLengthStrategy lenStrategy) {
                super(lenStrategy);
                 this.lenStrategy = lenStrategy; 
        }
        
    @Override 
    protected OutputStream doSerialize( 
            SessionOutputBuffer outbuffer, 
            HttpMessage message) throws HttpException, IOException 
    { 
        long len = this.lenStrategy.determineLength(message); 
        if (len == ContentLengthStrategy.CHUNKED) { 
            // use largish buffer for output chunks 
                return new ChunkedOutputStream(outbuffer,chunkSize); 
        } else if (len == ContentLengthStrategy.IDENTITY) { 
            return new IdentityOutputStream(outbuffer); 
        } else { 
            return new ContentLengthOutputStream(outbuffer, len); 
        } 
    } 
    
    public void setChunkSize(int size)
    {
        this.chunkSize = size;
    }


}




olegk wrote:
> 
> On Fri, 2012-05-25 at 09:28 -0700, anr wrote:
>> scenario is end user speaking in the mobile device the audio stream
>> should be
>> flushed to the speech engine to process as it comes.
>> Can you help me out by pointing to the examples how to achieve the steps
>> you
>> have mentioned.
>> 
>> Thanks for all the help.
> 
> static class MyEntitySerializer extends EntitySerializer {
> 
>     private ContentLengthStrategy lenStrategy;
>     
>     public MyEntitySerializer(ContentLengthStrategy lenStrategy) {
>         super(lenStrategy);
>         this.lenStrategy = lenStrategy;
>     }
> 
>     @Override
>     protected OutputStream doSerialize(
>             SessionOutputBuffer outbuffer, 
>             HttpMessage message) throws HttpException, IOException {
>         long len = this.lenStrategy.determineLength(message);
>         if (len == ContentLengthStrategy.CHUNKED) {
>             // use largish buffer for output chunks
>             return new ChunkedOutputStream(outbuffer, 10240);
>         } else if (len == ContentLengthStrategy.IDENTITY) {
>             return new IdentityOutputStream(outbuffer);
>         } else {
>             return new ContentLengthOutputStream(outbuffer, len);
>         }
>     }
>     
> }
> 
> static class MyHttpClientConnection extends DefaultHttpClientConnection
> {
> 
>     public MyHttpClientConnection() {
>         super();
>     }
> 
>     @Override
>     protected EntitySerializer createEntitySerializer() {
>         return new MyEntitySerializer(new
> StrictContentLengthStrategy());
>     }
>     
> }
> 
> Hope this helps
> 
> Oleg
> 
>>  
>> 
>> 
>> olegk wrote:
>> > 
>> > On Thu, 2012-05-24 at 15:13 -0700, anr wrote:
>> >> 
>> >> DEBUG org.apache.http.wire - >> "800[\r][\n]"
>> >>  org.apache.http.wire - >> "800[\r][\n]"
>> >> 
>> >> CoreConnectionPNames.SOCKET_BUFFER_SIZE
>> >> CoreConnectionPNames.MIN_CHUNK_LIMIT
>> >> 
>> >> How to change the transfer encoding chunk size when request is posted.
>> I
>> >> want to set different chunk sizes when we post a request.
>> >> 
>> >> Thanks
>> > 
>> > Per default HttpClient use 2048 byte cache for chunk coded output. So,
>> > the chunks should be about 2048 bytes, unless one explicitly uses
>> #flush
>> > method to flush out smaller chunks.
>> > 
>> > There is currently no (easy) way of overriding the default size of the
>> > chunk cache without creating a custom entity serializer and custom HTTP
>> > connection class.
>> > 
>> > Oleg    
>> > 
>> > 
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [email protected]
>> > For additional commands, e-mail: [email protected]
>> > 
>> > 
>> > 
>> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
> 
-- 
View this message in context: 
http://old.nabble.com/POST-Request-How-to-enable-Chunk-Size-tp33904874p33939535.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to