If you are posting a String content then you may want to calculate the
hash and set it as a header directly on WebClient.
If you prefer doing it in the interceptor then you can get the
original Object (such as String) like this:
Object str = message.getContent(List.class).get(0);

Cheers, Sergey

On Wed, Jun 8, 2011 at 10:09 PM, Humagain, Himal
<[email protected]> wrote:
> Thank you very much Dan for your reply. I am able to hit the interceptor and 
> set headers there and get it in the server. I still cannot get hold of 
> content of the post in the interceptor level. This is what I have:
>
> //in my main method
>        String payload = "This is what I want in ICOutBoundInterceptor";
>      WebClient xmlClient2 = WebClient.create(BASE_URI);
>
>      WebClient.getConfig(xmlClient2).getOutInterceptors().add(new 
> ICOutBoundInterceptor(Phase.WRITE));
>      String cResponse = xmlClient2.post(payload, String.class);
>
> //I want to get only the payload (content) part (The value of string payload 
> (value: "This is what I want in ICOutBoundInterceptor") from main method) in 
> //the handleMessage method of my interceptor (ICOutBoundInterceptor)
>
> I want to create hash of only the payload not the output stream. It is 
> because I found the output stream changes along the way until it reaches the 
> server side. I tried that but the hash is never equal in the client side and 
> server side.
>
> I will appreciate your help.
>
> Thanks,
>
>
> -----Original Message-----
> From: Daniel Kulp [mailto:[email protected]]
> Sent: Friday, June 03, 2011 10:56 AM
> To: [email protected]; Fabio souza
> Cc: Humagain, Himal
> Subject: Re: Getting payload in the client side.
>
> On Thursday, June 02, 2011 5:05:30 PM Humagain, Himal wrote:
>> Thanks a lot for your reply. I am trying the logging option but will not
>> fulfill my need. I need to get hold of the payload (content) in the client
>> side then I want to include it in my MD5 hashing of the content, then the
>> generated signature will be added to the header section of the post. If I
>> can get the payload in the form of a String in handleMessage method that
>> will be ideal. Is it possible to do that? If yes, Which interceptor should
>> I use and in which phase.
>
> You could grab the source for the Logging interceptors and use that as a
> starting point.
>
> That said, I'd suggest an alternative approach.   Stick an interceptor that
> runs prior to the StaxOutInterceptor that would do:
>
>
> OutputStream out = message.getContent(OutputStream.class);
> DigestOutputStream dos = new DigestOutputStream(out,
> MessageDigest.getInstance("MD5"))
> message.setContent(dos, OutputStream.class);
> message.put("digest.stream", dos);
>
>
> That will calculate the digest while writing.    A second interceptor that
> runs later can do:
>
>
> DigestOutputStream dos = message.get("digest.stream");
> dos.getMessageDigest().digest();
>
> to compute the digest and then do whatever it is you need to do with it.
>
>
> Actually, instead of the second interceptor, you could override the close
> method on the stream to do it:
>
>
> DigestOutputStream dos = new DigestOutputStream(out,
> MessageDigest.getInstance("MD5"))   {
>
> public void close() {
>   byte digest[] = getMessageDigest().digest();
>   //do something with it
>   super.close();
> }
> }
>
> Dan
>
>
>
>
>
>
>>
>> I will really appreciate your response.
>>
>> Thanks,
>> Himal
>>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:[email protected]]
>> Sent: Thursday, June 02, 2011 4:43 PM
>> To: Humagain, Himal
>> Cc: Fabio souza; [email protected]
>> Subject: Re: Getting payload in the client side.
>>
>> Hi, Please use a logging feature
>>
>> Cheers, Sergey
>>
>> On Thu, Jun 2, 2011 at 6:55 PM, Humagain, Himal
>>
>> <[email protected]> wrote:
>> > Hi,
>> >
>> > How can I print the CXF generated payload (content) in the client side
>> > before sending it to the web service? My web service takes an object and
>> > gives me an object back. But I would like to get the CXF generated
>> > payload before it is posted to the webservie.
>> >
>> > I have tried using interceptors and I was trying to get to the payload
>> > using the Message under "handleMessage" method.
>> >
>> > I will appreciate any help.
>> >
>> > Thanks,
>> > Himal.
>> > This communication is for informational purposes only. It is not
>> > intended as an offer or solicitation for the purchase or sale of
>> > any financial instrument or as an official confirmation of any
>> > transaction. All market prices, data and other information are not
>> > warranted as to completeness or accuracy and are subject to change
>> > without notice. Any comments or statements made herein do not
>> > necessarily reflect those of JPMorgan Chase & Co., its subsidiaries
>> > and affiliates.
>> >
>> > This transmission may contain information that is privileged,
>> > confidential, legally privileged, and/or exempt from disclosure
>> > under applicable law. If you are not the intended recipient, you
>> > are hereby notified that any disclosure, copying, distribution, or
>> > use of the information contained herein (including any reliance
>> > thereon) is STRICTLY PROHIBITED. Although this transmission and any
>> > attachments are believed to be free of any virus or other defect
>> > that might affect any computer system into which it is received and
>> > opened, it is the responsibility of the recipient to ensure that it
>> > is virus free and no responsibility is accepted by JPMorgan Chase &
>> > Co., its subsidiaries and affiliates, as applicable, for any loss
>> > or damage arising in any way from its use. If you received this
>> > transmission in error, please immediately contact the sender and
>> > destroy the material in its entirety, whether in electronic or hard
>> > copy format. Thank you.
>> >
>> > Please refer to http://www.jpmorgan.com/pages/disclosures for
>> > disclosures relating to European legal entities.
>
> --
> Daniel Kulp
> [email protected]
> http://dankulp.com/blog
> Talend - http://www.talend.com
>



-- 
Sergey Beryozkin

Application Integration Division of Talend
http://sberyozkin.blogspot.com

Reply via email to