2006-06-19 14:11:02Richard

Sample code: To invoke web service in Axis2

package webservice;
import javax.xml.soap.*;
import javax.xml.parsers.*;
import javax.xml.namespace.QName;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.xml.transform.dom.DOMSource;
import org.w3c.dom.Document;
import java.util.Iterator;
import java.net.URL;
import java.io.File;

public class WSRequest {
public static void main(String[] args) {
try {
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
envelope.setEncodingStyle(URI_ENCODING);
header.detachNode();


QName bodyName = new QName("http://axisversion.sample/xsd";, "getVersion", "m");
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
File dataFile = new File("d:\temp\MCD_sample.xml");
FileDataSource dataSource = new FileDataSource(dataFile);
DataHandler dataHandler = new DataHandler(dataSource);
AttachmentPart attachment = message.createAttachmentPart(dataHandler);
attachment.setContentId("mcd");
message.addAttachmentPart(attachment);
URL endpoint = new URL("http://ltrichard/Windchill/servlet/services/version";);
String authString = "username:password";
String auth = "Basic " + new sun.misc.BASE64Encoder().encode(authString.getBytes());
message.getMimeHeaders().addHeader("Authorization", auth);
System.out.println(endpoint.getProtocol() + "://" + endpoint.getHost() + endpoint.getPath() + "n" + "Authorization:" + auth);
SOAPMessage response = connection.call(message, endpoint);
connection.close();
SOAPBody soapBody = response.getSOAPBody();
System.out.println("response===" + response.getSOAPBody().getTextContent());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}