Introduction
An iceLogo SOAP (Simple Object Access Protocol) server can be accessed via http://iomics.ugent.be/icelogoserver/services/icelogo. This SOAP server provides access to the different iceLogo visualization options, see below for the different methods. These different methods all create a string of SVG content as a result. The iceLogo server and SOAP client examples can be found here.
WSDL
A WS-I compliant document/literal-wrapped WSDL (Web Services Description Language) can be found here. This file defines the different services and methods.Creating a client, a java example
Different methods exist for creating SOAP client applications in java. The wsdl2java tool is an easy and useful tool for the fast creation of a java client. However, a client call can also manually be created. Here we will give an example on how to create a client that gets a filled logo (the code can be found here). More examples can be found in the iceLogo server source.
- First, we will create the url.
// Create the url, this url point to the location of the webservice
URL lIcelogoUrl = new URL("http://iomics.ugent.be/icelogoserver/services/icelogo");
// Set a String Deserializer for the Responsee ("getFilledLogoReturn")
SOAPMappingRegistry smr = new SOAPMappingRegistry();
Deserializer stringDser = new StringDeserializer();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,new QName("urn:IceLogoFetcher","getFilledLogoReturn"),null,null,stringDser);
// Create and build the call.
Call call = new Call();
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI("urn:IceLogoFetcher");
call.setMethodName("getFilledLogo");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// Create the parameters
VectorParameter params = new VectorParameter();
String[] lHumanGranzymeBSubstrates = newString[]{"GHISVKEPTPSIASDISLPIATQELRQRLR",... ,...,"LERDDGSTMMEIDGDKGKQGGPTYYIDTNA","SAGYGGYEEYSGLSDGYGFTTDLFGRDLSY"};
params.addElement(new Parameter("lExperimentalSet", String[].class,lHumanGranzymeBSubstrates,null));
params.addElement(new Parameter("lStartPosition", Integer.class, new Integer(0),null));
params.addElement(new Parameter("lHeight", Integer.class, new Integer(600), null));
params.addElement(new Parameter("lWidth", Integer.class, new Integer(800), null));
call.setParams(params);
// Invoke the call ...
Response lIceLogoResponse;
try{
// ... and get the Response
lIceLogoResponsee = call.invoke(lIcelogoUrl, "");
} catch (SOAPException e) {
// ... or print an error if something went wrong
System.err.println("Caught SOAPException (" + e.getFaultCode() + "): " +
e.getMessage());
return;
}
//get the result
Parameter ret = lIceLogoResponse.getReturnValue();
String lSVGResult = (String) ret.getValue();
//create an svg document
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
InputStream is = new ByteArrayInputStream(lSVGResult.getBytes("UTF-8"));
SVGDocument lSVGDocument = (SVGDocument) f.createDocument(null, is);
//create the input
TranscoderInput input = new TranscoderInput(lSVGDocument);
//create an output and an outputstream
OutputStream lOutstream = new FileOutputStream(lFilename);
TranscoderOutput lOutput = new TranscoderOutput(lOutstream);
//do the transcoding
//we need a jpeg figure
Transcoder lJPEGTranscoder = new JPEGTranscoder();
lJPEGTranscoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));
lJPEGTranscoder.transcode(input, lOutput);
//close the stream
lOutstream.flush();
lOutstream.close();
Methods
For the full list of all possible methods and their parameters, please refer to the wsdl file.