1.java soap api操作和发送soap消息

转自:https://blog.csdn.net/lbinzhang/article/details/84721359

1。

 1 /** 
 2      * soap请求 
 3      *  
 4      * @return 
 5      * @throws Exception 
 6      */  
 7     public static String invokeMethod(Object data) throws Exception {  
 8         // 创建连接    
 9         SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();  
10         SOAPConnection soapConn = soapConnFactory.createConnection();  
11         // 创建消息对象    
12         MessageFactory messageFactory = MessageFactory.newInstance();  
13         SOAPMessage soapMessage = messageFactory.createMessage();  
14         // 创建soap消息主体  
15         SOAPPart soapPart = soapMessage.getSOAPPart();  
16         SOAPEnvelope soapEnvelope = soapPart.getEnvelope();  
17         SOAPBody body = soapEnvelope.getBody();  
18         // 根据要传给mule的参数,创建消息body内容  
19          SOAPElement bodyElement =body.addChildElement(soapEnvelope.createName("amsPortal", "ns2875","http://tempuri.org"));  
20          bodyElement.addChildElement("secret").addTextNode("true");  
21          bodyElement.addChildElement("command").addTextNode("OracleCli");  
22          SOAPElement argsElement = bodyElement.addChildElement("args");  
23          argsElement.addChildElement("ConnStr").addTextNode("192.168.40.175:1521/orcl");  
24          argsElement.addChildElement("User").addTextNode("mtis");  
25          argsElement.addChildElement("Pass").addTextNode("mtis");  
26          soapMessage.saveChanges();  
27           
28          //     soapMessage = saveSoapChage(data, soapEnvelope, body, soapMessage);  
29          /*  
30          * 实际的消息是使用 call()方法发送的,该方法接收消息本身和目的地作为参数,并返回第二个 SOAPMessage 作为响应。  
31          * call方法的message对象为发送的soap报文,url为mule配置的inbound端口地址。  
32          */    
33         URL url = new URL("http://192.168.200.236/soap/soap_server_pro.php");  
34         // 响应消息  
35         SOAPMessage reply = soapConn.call(soapMessage, url);  
36         // 创建soap消息转换对象  
37         TransformerFactory transformerFactory = TransformerFactory.newInstance();  
38         Transformer transformer = transformerFactory.newTransformer();  
39         // 提取消息内容  
40         Source sourceContent = reply.getSOAPPart().getContent();  
41         //输出流  
42         ByteArrayOutputStream out = new ByteArrayOutputStream();  
43         StreamResult result = new StreamResult(out);  
44         //sourceContent实现此接口的对象包含充当源输入(XML 源或转换指令)所需的信息  
45         //result充当转换结果的持有者,可以为 XML、纯文本、HTML 或某些其他格式的标记  
46         transformer.transform(sourceContent, result);  
47         //返回结果  
48         String xmlData = new String(out.toByteArray());  
49         // xml解析  
50         xmlData = parserXml(data, xmlData);  
51         //输出到控制台  
52         System.out.println(xmlData);  
53         //关闭连接  
54         soapConn.close();  
55         return xmlData;  
56     }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用SOAP API操作发送SOAP消息。下面是一个简单的示例: 首先,需要引入以下依赖: ``` <dependency> <groupId>com.sun.xml.messaging.saaj</groupId> <artifactId>saaj-impl</artifactId> <version>1.5.1</version> </dependency> <dependency> <groupId>javax.xml.soap</groupId> <artifactId>javax.xml.soap-api</artifactId> <version>1.4.0</version> </dependency> ``` 然后,可以使用以下代码创建SOAP消息: ``` // 创建SOAP消息工厂 MessageFactory factory = MessageFactory.newInstance(); // 创建SOAP消息 SOAPMessage message = factory.createMessage(); // 获取SOAP消息SOAPBody body = message.getSOAPBody(); // 创建命名空间 String namespaceURI = "http://www.example.org/stock"; String prefix = "stock"; body.addNamespaceDeclaration(prefix, namespaceURI); // 创建请求消息元素 SOAPElement requestElem = body.addChildElement("getStockPrice", prefix); // 添加请求参数 SOAPElement symbolElem = requestElem.addChildElement("symbol", prefix); symbolElem.addTextNode("AAPL"); // 发送SOAP消息 String endpointUrl = "http://www.example.org/stockquote"; SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = connectionFactory.createConnection(); SOAPMessage response = connection.call(message, endpointUrl); connection.close(); // 解析响应消息 SOAPBody responseBody = response.getSOAPBody(); SOAPElement responseElem = (SOAPElement) responseBody.getChildElements().next(); double stockPrice = Double.parseDouble(responseElem.getValue()); ``` 在上面的示例中,我们首先创建了一个SOAP消息工厂,然后使用它来创建一个SOAP消息。接着,我们获取了SOAP消息体,并添加了一个命名空间和请求消息元素。在请求消息元素中,我们添加了一个请求参数。最后,我们使用SOAP连接工厂和连接来发送SOAP消息,并解析响应消息。 需要注意的是,上面的示例只是一个简单的示例,实际使用中可能需要更复杂的SOAP消息和处理机制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值