用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 >

你可能感兴趣的:(web services)