Package uk.ac.starlink.registry

# 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 Summary

Constructors
Constructor
Description
`SoapClient(URL endpoint)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`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 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`