用Soap消息调用Web Services(续)

      上篇《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>

服务器端响应结果:

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>

posted on 2007-08-21 17:39  Phinecos(洞庭散人)  阅读(1444)  评论(1编辑  收藏  举报

导航