Here is another way of doing it which I found convenient to use. Not sure if it is for better or worse though:
 
class SomeClass {
 
    SomeMethod()
    {
        org.apache.axis.client.Service myService = new org.apache.axis.client.Service; // Initialize service and call objects normally
        org.apache.axis.client.Call call = new org.apache.axis.client.Call();
 
        Handler responseHandler = new CustomClientResponseHandler();
 
        // This is call to set your custom client handler
        call.setClientHandlers(null, responseHandler);
        call.invoke(...);
    }
}
 
public class CustomClientResponseHandler extends BasicHandler {
 
    // Function called before the response returns to Call object after invoke
    public void invoke(MessageContext msgContext) throws AxisFault
    {
        String bodyXML = msgContext.getMessage().getSOAPPart().getEnvelope().getBody().toString();
        // Hand off to another program anyway you like. Don't have to work with string,
        // getBody() will return a SOAPBody object which extends a SOAPElement object
        // which extends a SOAPNode
    }
}
-----Original Message-----
From: WALTERS,EUGENIO (HP-Boise,ex1) [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 12, 2003 1:45 PM
To: [EMAIL PROTECTED]
Subject: RE: Accessing 'raw' document body.

Well in that case you need to change the default engine of the service object that could use to get the call object. You can add the handler there. It could look something like this although I have never tried it:
 
public class MyEngineConfiguration extends SimpleProvider
{
     MyEngineConfiguration ()
    {
        this.deployTransport ("http", new CustomHandler);
    }
    Handler getGlobalResonseHandler()
    {
         return new CustomHandler();
     }
 
}
Service service = new Service (MyEngineConfiguration);
Call call = service.createCall()
....
 
Hope that helps
Eugenio
-----Original Message-----
From: Erich Oliphant [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 12, 2003 12:28 PM
To: [EMAIL PROTECTED]
Subject: Re: Accessing 'raw' document body.

Thanks,
But I thought the handlers only applied to the server side?  I need to get the doc body with the client API.
----- Original Message -----
Sent: Wednesday, March 12, 2003 2:17 PM
Subject: RE: Accessing 'raw' document body.

You could use a response handler to retrieve the response message.
 
your deploy.wsdd could look something like this:
 
 <service name="test" provider="java:RPC">
  <responseFlow>
   <handler type="java:CustomHandler">
    <parameter name="scope" value="scope"/>
   </handler>
  </responseFlow>
  <parameter name="allowedMethods" value="*"/>
  <parameter name="className" value="ServiceClass"/>
  <parameter name="scope" value="scope"/>
 </service>
 
your handler could look some thing like
 
public class CustomHandler extends BasicHandler
{
    public void invoke (MessageContext messageContext)
   {
        Message responseMessage = messageContext.getResponseMessage();
        ......
   }
}
Eugenio
-----Original Message-----
From: Erich Oliphant [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 12, 2003 12:04 PM
To: [EMAIL PROTECTED]
Subject: Accessing 'raw' document body.

Hello,
I am using Axis to make calls against a SOAP service that uses document style messaging.  The Axis classes make it much easier to send requests and deal w/ the responses.  I have one situation where I need do several request/replies but I need to hand the unparsed response document body off to another program in the last step.  Is there any easy way to do this?
 
Thanks

Reply via email to