Hi Axis2 Users,

Is there no one else who has an idea?

I would really like to get this working.

Kind regards,
Marinus

-----Original Message-----
From: Sagara Gunathunga [mailto:sagara.gunathu...@gmail.com]
Sent: donderdag 26 februari 2009 14:13
To: axis-user@ws.apache.org
Subject: Re: Retry: Axis2 - Retrieving SOAPBody through MessageContext
versus OMException (WstxUnexpectedCharException)

Hi Marinus,

I don't have exact idea about the exception you got , may be input
stream  is closed or in a invalid state  when the time of you access
it using getLastOperationContext() method, someone more knowledgeable
will share his insights regarding this .

Meanwhile try to access in coming SOAP message using the return object
(CancelBookingResponseDocument) as follows .

                   output.getOMElement(null,null).serialize(System.out);

Instead of System.out you can use any OutPutStream  with serialize
method, Hope this will work with you.

Thanks ,

On Thu, Feb 26, 2009 at 3:20 PM, Geuze, Marinus
<marinus.ge...@getronics.com> wrote:
>> Dear Axis2 Users,
>>
>> I hope you can help me with this problem.
>>
>> This is the situation. I use the Axis2 framework for accessing a WebService. 
>> When I use the generated Stub then everything works perfectly fine. However 
>> I want to obtain the actual message which is sent to and received from the 
>> WebService. This is for logging reasons. Here the problem starts. See my 
>> code example below.
>>
>> //Create Stub
>> QuickCarRentalServiceStub testStub = new QuickCarRentalServiceStub(url);
>>
>> //Set Stub options (only those who are needed)
>> Options options = testStub._getServiceClient().getOptions();
>>
>> //Set http protocol version
>> options.setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION,      
>> HTTPConstants.HEADER_PROTOCOL_11);
>>
>> //Set soap version (example: SOAP 1.1 (SOAP11Constants) or SOAP 1.2 
>> //(SOAP12Constants))
>> options.setSoapVersionURI(
>>       org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
>>
>> //Set input of proxy method
>> CancelBookingDocument input = CancelBookingDocument.Factory.newInstance();
>> CancelBookingDocument.CancelBooking secondInput =
>>       CancelBookingDocument.CancelBooking.Factory.newInstance();
>> secondInput.setBookingId("1");
>> input.setCancelBooking(secondInput);
>>
>> //Execute Stub method
>> CancelBookingResponseDocument output = testStub.cancelBooking(input);
>>
>> //Get output of proxy method
>> String responseAsString = output.getCancelBookingResponse().getResponse();
>>
>> //Till now everything is fine. The responseAsString contains a valid value.
>>
>> MessageContext msgContextIn = 
>> testStub._getServiceClient().getLastOperationContext().getMessageContext("In");
>> SOAPEnvelope soapEnvIn = msgContextIn.getEnvelope();
>> SOAPBody soapBodyIn = soapEnvIn.getBody();
>> return soapBodyIn.toString();
>>
>> The soapBodyIn.toString() throws a OMException with the errormessage > '> 
>> com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'V' (code 
>> 86) in epilog; expected '<' at [row,col {unknown-source}]: [1,593]> '>
>>
>> The returned soap message is (obtained with use of TCPMON, and the message 
>> seems valid):
>>
>> <SOAP-ENV:Envelope 
>> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>> ><SOAP-ENV:Body><rpl:cancelBookingResponse 
>> xmlns:rpl='urn:QuickCarRentalServiceVi'><Response>1 
>> cancelled.</Response></rpl:cancelBookingResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
>>
>> My question is this: Why does the output object work and why does the 
>> soapBodyIn.toString() fails? I really hope someone can help.
>>
>> I use Axis version 1.4.1 and Axiom version 1.2.8.
>>
>> Thanks in advantage.
>>
>> Kind regards,
>> Marinus
>



-- 
Sagara Gunathunga

Blog - http://ssagara.blogspot.com
Web - http://sagaras.awardspace.com/

Reply via email to