上篇《用Soap消息調用Web Services》隻是簡單的調用一個傳回值為String的無參數WebService,這次改成調用一個參數為int型的傳回值為一個類對象的WebService
伺服器端WebService:
public class user implements Serializable
{
private String name;
public user()
{
}
public String getName() {
return name;
public void setName(String name) {
this.name = name;
}
public class classDemo implements Serializable
private user[] users;
public user[] getUsers() {
return users;
public void setUsers(user[] users) {
this.users = users;
public class HelloWorldServiceImpl implements IHelloWorldService
public classDemo GetUsersInRoom(int rID)
classDemo cd = new classDemo();
user[] a = new user[2];
a[0] = new user();
a[0].setName("aa");
a[1] = new user();
a[1].setName("bb");
cd.setUsers(a);
return cd;
用戶端代碼:
public static void doSoapPost()
try
{
//First create the connection
SOAPConnectionFactory soapConnFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection =
soapConnFactory.createConnection();
//Next, create the actual message
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
//Create objects for the message parts
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
//Populate the Message
StreamSource preppedMsgSrc = new StreamSource(
new FileInputStream("E:\\soap.msg"));
soapPart.setContent(preppedMsgSrc);
//Save the message
message.saveChanges();
//Check the input
System.out.println("\nREQUEST:\n");
message.writeTo(System.out);
System.out.println();
//Send the message and get a reply
//Set the destination
String destination =
"http://localhost:8080/HelloWorld/services/HelloWorldService";
//Send the message
SOAPMessage reply = connection.call(message, destination);
// Check the output
System.out.println("\nRESPONSE:\n");
//Create the transformer
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
Transformer transformer =
transformerFactory.newTransformer();
//Extract the content of the reply
Source sourceContent = reply.getSOAPPart().getContent();
//Set the output for the transformation
StreamResult result = new StreamResult(System.out);
transformer.transform(sourceContent, result);
System.out.println();
//Close the connection
connection.close();
}
catch(Exception e)
System.out.println(e.getMessage());
}
用戶端Soap請求格式:
REQUEST:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<ns1:GetUsersInRoom xmlns:ns1="http://phinecos.cnblogs.com">
<in0 xsi:type='xsd:int'>3
</in0>
</ns1:GetUsersInRoom>
</soap:Body>
</soap:Envelope>
伺服器端響應結果:
RESPONSE:
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><ns1:GetUsersInRoomResponse xmlns:ns1="http://phinecos.cnblogs.com"><ns1:out><users xmlns="http://boomga.com"><user><name>aa</name><path>/a.w3d</path></user><user><name>bb</name><path>/b.w3d</path></user></users></ns1:out></ns1:GetUsersInRoomResponse></soap:Body></soap:Envelope>
本文轉自Phinecos(洞庭散人)部落格園部落格,原文連結http://www.cnblogs.com/phinecos/archive/2007/08/21/864260.html,如需轉載請自行聯系原作者