用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   Phinecos(洞庭散人)  阅读(1444)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

统计

点击右上角即可分享
微信分享提示