Sub Zero Wins

Tuesday, October 06, 2009

Calling a web service in java

package test;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Calendar;
import java.util.Date;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPFault;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPFaultException;

public class SendMsg
{

private String serviceName;
private String portName;
private String targetNamespace;

public SendMsg()
{
}

public String doit(String args[])
throws Exception
{
String wsdlURL;
String file;
String resultString;
wsdlURL = args[0];
file = args[1];
Dispatch serviceDispatch = null;
Source result = null;
resultString = null;
FileWriter fw;
Exception exception;
init(wsdlURL);
URL url = null;
try
{
url = new URL(null, wsdlURL);
}
catch(MalformedURLException e)
{
System.out.println((new StringBuilder()).append("Failed to create URL for the wsdl Location: '").append(wsdlURL).append("'.").toString());
System.out.println(e.getMessage());
}
URL serviceURL = url;
QName serviceQName = new QName(targetNamespace, serviceName);
QName portQName = new QName(targetNamespace, portName);
Service service = Service.create(serviceURL, serviceQName);
Dispatch serviceDispatch = service.createDispatch(portQName, javax/xml/transform/Source, javax.xml.ws.Service.Mode.PAYLOAD);
Source result = (Source)serviceDispatch.invoke(new StreamSource(new FileInputStream(file)));
resultString = sourceToXMLString(result);
if(args.length == 3)
{
String outfile = args[2];
fw = null;
try
{
fw = new FileWriter(outfile);
fw.write(resultString);
}
catch(IOException e)
{
throw new Exception((new StringBuilder()).append("Results could not be written to file ").append(outfile).toString());
}
finally
{
if(fw == null) goto _L0; else goto _L0
}
if(fw != null)
{
try
{
fw.close();
}
catch(Exception ignore) { }
}
}
break MISSING_BLOCK_LABEL_398;
try
{
fw.close();
}
catch(Exception ignore) { }
throw exception;
SOAPFaultException e;
e;
String faultCode = e.getFault().getFaultCode().toLowerCase();
String faultDetails = e.getFault().getFaultString();
if(faultCode.contains("server"))
{
System.err.println("The Web Service is not in a valid state.");
System.err.println("Details:\n\n");
System.err.println(faultDetails);
} else
if(faultCode.contains("client"))
{
System.err.println("The XML request is invalid. Fix the request and resend.");
System.err.println("Details:\n\n");
System.err.println(faultDetails);
}
break MISSING_BLOCK_LABEL_398;
e;
System.err.println(e.getMessage());
return resultString;
}

public static void main(String args[])
{
if(args.length < 2)
{
printUsage();
} else
{
try
{
System.out.println((new StringBuilder()).append("##### START TIME : ").append(Calendar.getInstance().getTime().toString()).toString());
String res = (new SendMsg()).doit(args);
System.out.println(res);
System.out.println((new StringBuilder()).append("##### FINISH TIME : ").append(Calendar.getInstance().getTime().toString()).toString());
}
catch(Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}

private static void printUsage()
{
System.out.println((new StringBuilder()).append("\nUsage: {weberviceurl} inputfile[").append(File.pathSeparator).append("inputfile]* [outputfile").toString());
}

public String sourceToXMLString(Source result)
{
String xmlResult = null;
try
{
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty("indent", "yes");
transformer.setOutputProperty("method", "xml");
java.io.OutputStream out = new ByteArrayOutputStream();
StreamResult streamResult = new StreamResult();
streamResult.setOutputStream(out);
transformer.transform(result, streamResult);
Utf8Encoder encoder = new Utf8Encoder();
xmlResult = encoder.decode(streamResult.getOutputStream().toString());
}
catch(TransformerException e)
{
e.printStackTrace();
}
return xmlResult;
}

private void init(String wsdlURL)
{
String testIt = wsdlURL.toLowerCase();
if(testIt.contains("calculate"))
{
serviceName = "CalculateTaxWSService50";
portName = "CalculateTax50";
targetNamespace = "http://www.vertexinc.com/oseries/services/CalculateTax50";
} else
if(testIt.contains("echo"))
{
serviceName = "EchoWSService";
portName = "Echo";
targetNamespace = "http://www.vertexinc.com/oseries/services/EchoDoc";
} else
if(testIt.contains("lookup"))
{
serviceName = "LookupTaxAreasWSService50";
portName = "LookupTaxAreas50";
targetNamespace = "http://www.vertexinc.com/oseries/services/LookupTaxAreas50";
} else
if(testIt.contains("version"))
{
serviceName = "VertexVersionWSService50";
portName = "VertexVersion50";
targetNamespace = "http://www.vertexinc.com/oseries/services/VertexVersion50";
}
}
}

0 Comments:

Post a Comment

<< Home