Class SoapClient

java.lang.Object
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 Details

    • SoapClient

      public SoapClient(URL endpoint)
      Constructor.
      Parameters:
      endpoint - SOAP endpoint of service
  • Method Details

    • 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