----- Original Message -----
Sent: Wednesday, March 12, 2003 3:10
PM
Subject: RE: Accessing 'raw' document
body.
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
}
}
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
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
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