uk.ac.starlink.registry
Class SoapClient

java.lang.Object
  extended by uk.ac.starlink.registry.SoapClient

public class SoapClient
extends Object

Lightweight, freestanding SOAP client which can make simple requests and allows the responses to be processed as a SAX stream. Logging of sent and received XML can optionally be performed by using the setEchoStream(java.io.OutputStream) method. Probably, there is much of SOAP that this doesn't implement, but it works well enough to write a registry client on top of it.

Why write yet another SOAP client? Last time I tried to get Axis to do this (stream processing of the response) it took me several days of misery, and still didn't work. The actual job I need to do here is quite straightforward, so it's not difficult to write it from scratch.

Since:
9 Dec 2009
Author:
Mark Taylor

Constructor Summary
SoapClient(URL endpoint)
          Constructor.
 
Method Summary
 void execute(SoapRequest request, ContentHandler responseBodyHandler)
          Sends a SOAP request, and passes the response body to a supplied SAX content handler.
 URL getEndpoint()
          Returns the endpoint of the service this client talks to.
 void setEchoStream(OutputStream echoStream)
          Sets an output stream to which all input and output HTTP traffic will be logged.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SoapClient

public SoapClient(URL endpoint)
Constructor.

Parameters:
endpoint - SOAP endpoint of service
Method Detail

getEndpoint

public URL getEndpoint()
Returns the endpoint of the service this client talks to.

Returns:
SOAP endpoint

setEchoStream

public void setEchoStream(OutputStream echoStream)
Sets an output stream to which all input and output HTTP traffic will be logged. If null (the default), no such logging is performed.

Parameters:
echoStream - logging destination stream

execute

public void execute(SoapRequest request,
                    ContentHandler responseBodyHandler)
             throws IOException,
                    SAXException
Sends a SOAP request, and passes the response body to a supplied SAX content handler. It will be parsed by a SAX parser which is namespace aware, and is not validating.

Parameters:
request - SOAP request to send
responseBodyHandler - a SAX ContentHandler which will be invoked on the content of the <soapenv:Body> response element in case of a successful (200) response
Throws:
IOException
SAXException


Copyright © 2013 Central Laboratory of the Research Councils. All Rights Reserved.