Oleg,

I guess in my case it is not repeatable since in
writeRequest(OutputStream), I need to get the business data and send
them to the OutputStream uninterrupted.

Thank you very much for the help.

On Wed, Sep 17, 2008 at 5:41 PM, Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
> On Wed, 2008-09-17 at 17:35 -0400, Zhaohua Meng wrote:
>> Oleg,
>>
>> Thanks for the pointer. I implemented the RequestEntity and the
>> streaming is working fine if I know the content length. However the
>> content is generated dynamically from business data. As is specified
>> in the RequestEntity, my getContentLength() returns -1. However I'm
>> getting the following exception. Do I need to implement anything else?
>>
>> Thanks,
>>
>
> If the content is repeatable, that is, it can be reliably generated by
> the entity more than once, the entity should indicate so by returning
> true from RequestEntity#isRepeatable().
>
> If the content is not repeatable, then the request enclosing such entity
> cannot be retried for obvious reasons.
>
> Hope this helps
>
> Oleg
>
>
>
>>
>> Sep 17, 2008 5:23:47 PM
>> org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
>> INFO: I/O exception
>> (org.apache.commons.httpclient.NoHttpResponseException) caught when
>> processing request: The server www.apache.org failed to respond
>> Sep 17, 2008 5:23:47 PM
>> org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
>> INFO: Retrying request
>> org.apache.commons.httpclient.ProtocolException: Unbuffered entity
>> enclosing request can not be repeated.
>>       at 
>> org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:487)
>>       at 
>> org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
>>       at 
>> org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
>>       at 
>> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
>>       at 
>> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
>>       at 
>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
>>       at 
>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
>>       at 
>> com.cgsh.poc.httpclient.ProxyAuthenticationTest.doHttpClient(ProxyAuthenticationTest.java:36)
>>       at 
>> com.cgsh.poc.httpclient.ProxyAuthenticationTest.main(ProxyAuthenticationTest.java:26)
>>
>>
>> On Wed, Sep 17, 2008 at 1:56 PM, Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
>> > On Wed, 2008-09-17 at 00:20 -0400, Zhaohua Meng wrote:
>> >> I have code snippet like the following. After establishing a
>> >> connection, I need to steam content from database as post body. How do
>> >> I get a OutputStream from either HttpClient or PostMethod? With
>> >> java.net.URL I can use openConnection().getOutputStream(). However I
>> >> want to leverage the nice features of HttpCleint. In the following
>> >> code, I want to call the writeContent() method which should get huge
>> >> data from database.
>> >>
>> >
>> > Zhaohua,
>> >
>> > You need to implement a custom RequestEntity
>> >
>> > http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/methods/RequestEntity.html
>> >
>> > You can use the FileRequestEntity class shipped with HttpClient 3.1 as
>> > an example
>> >
>> > http://hc.apache.org/httpclient-3.x/xref/org/apache/commons/httpclient/methods/FileRequestEntity.html
>> >
>> > Hope this helps
>> >
>> > Oleg
>> >
>> >
>> >> Any help is appreciated.
>> >>
>> >>       public static void main(String[] args)  throws Exception {
>> >>               HttpClient client = new HttpClient();
>> >>               PostMethod post = new 
>> >> PostMethod("http://myhost/service/consumer";);
>> >>               try {
>> >>                        //how to get a OutputStream to write my content?
>> >>
>> >>                       int status = client.executeMethod(post);
>> >>
>> >>                       System.out.println(post.getResponseBodyAsString());
>> >>               } finally {
>> >>                       post.releaseConnection();
>> >>               }
>> >>       }
>> >>       public static void writeContent(OutputStream out) throws 
>> >> IOException {
>> >>                 //data will be generated from database.
>> >>               out.write("<data><value>this</value></data>".getBytes());
>> >>       }
>> >> }
>> >>
>> >
>> >
>> > ---------------------------------------------------------------------
>> > 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]
>
>



-- 
Zhaohua Meng
[EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to