JavaShuo
栏目
标签
java soap api操做和发送soap消息
时间 2021-08-14
标签
java
app
dom
ide
测试
url
spa
.net
code
orm
栏目
Java
繁體版
原文
原文链接
最近恰好使用到soap应用,在网上搜到这边博客感受还不错,先收藏了。
原址:
http://liuxueping1987.iteye.com/blog/1600651
java
Java代码
package
gov.hn12396.appintegration.mule.client;
import
gov.hn12396.appintegration.mule.util.EncoderUtil;
import
java.net.URL;
import
java.util.Calendar;
import
javax.xml.soap.MessageFactory;
import
javax.xml.soap.SOAPBody;
import
javax.xml.soap.SOAPConnection;
import
javax.xml.soap.SOAPConnectionFactory;
import
javax.xml.soap.SOAPElement;
import
javax.xml.soap.SOAPEnvelope;
import
javax.xml.soap.SOAPMessage;
import
javax.xml.soap.SOAPPart;
import
javax.xml.transform.Source;
import
javax.xml.transform.Transformer;
import
javax.xml.transform.TransformerFactory;
import
javax.xml.transform.stream.StreamResult;
import
org.w3c.dom.Node;
/**
* 功能描述:模拟客户端A-即服务调用者,经过该类模拟客户端发送soap报文给mule,
* 同时把mule的响应报文打印出来作测试
* @author liuxp
*
*/
public
class
SynClient {
public
static
void
main(String args[]) {
try
{
// 建立链接
// ==================================================
SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory
.newInstance();
SOAPConnection connection = soapConnFactory.createConnection();
// 建立消息对象
// ===========================================
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
// message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "gb2312");
// 建立soap消息主体==========================================
SOAPPart soapPart = message.getSOAPPart();
// 建立soap部分
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
// 根据要传给mule的参数,建立消息body内容。具体参数的配置能够参照应用集成接口技术规范1.1版本
// =====================================
SOAPElement bodyElement = body.addChildElement(envelope.createName(
"process"
,
"Request"
,
"http://esb.service.com/"
));
bodyElement.addChildElement(
"ServiceCode"
).addTextNode(
"10000061"
);
bodyElement.addChildElement(
"OrigAppId"
).addTextNode(
"999"
);
bodyElement.addChildElement(
"HomeAppId"
).addTextNode(
"998"
);
Calendar c = Calendar.getInstance();
String reqTime = String.valueOf(c.getTimeInMillis());
bodyElement.addChildElement(
"ReqTime"
).addTextNode(reqTime);
bodyElement.addChildElement(
"IpAddress"
).addTextNode(
"10.212.40.112"
);
bodyElement.addChildElement(
"OrigSerialNo"
).addTextNode(
"201205242011"
);
//(ServiceCode+ OrigAppId+ ReqTime+ IpAddress)签名
String AppSignature =
"10000061"
+
"999"
+reqTime+
"10.212.40.112"
+
"123456"
;
bodyElement.addChildElement(
"AppSignature"
).addTextNode(EncoderUtil.md5(AppSignature));
bodyElement.addChildElement(
"Version"
).addTextNode(
"014"
);
// bodyElement.addChildElement("RelSessionId").addTextNode("RelSessionId");
// bodyElement.addChildElement("ReplyCode").addTextNode("ReplyCode");
bodyElement.addChildElement(
"ReplyVersion"
).addTextNode(
"05"
);
bodyElement.addChildElement(
"TimeOut"
).addTextNode(
"30"
);
// bodyElement.addChildElement("FtpDir").addTextNode("FtpDir");
// bodyElement.addChildElement("FileList").addTextNode("FileList");
bodyElement.addChildElement(
"serviceParas"
).addTextNode(
"<param><name>apptest</name><password>apptest</password></param>"
);
// Save the message
message.saveChanges();
// 打印客户端发出的soap报文,作验证测试
System.out.println(
" REQUEST: "
);
message.writeTo(System.out);
System.out.println(
" "
);
/*
* 实际的消息是使用 call()方法发送的,该方法接收消息自己和目的地做为参数,并返回第二个 SOAPMessage 做为响应。
* call方法的message对象为发送的soap报文,url为mule配置的inbound端口地址。
*/
URL url =
new
URL(
"http://localhost:9003/WebServiceSyn/process"
);
System.out.println(url);
// 响应消息
// ===========================================================================
SOAPMessage reply = connection.call(message, url);
//reply.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "gb2312");
// 打印服务端返回的soap报文供测试
System.out.println(
"RESPONSE:"
);
// ==================建立soap消息转换对象
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);
// Close the connection 关闭链接 ==============
System.out.println(
""
);
connection.close();
/*
* 模拟客户端A,异常处理测试
*/
SOAPBody ycBody = reply.getSOAPBody();
Node ycResp = ycBody.getFirstChild();
System.out.print(
"returnValue:"
+ycResp.getTextContent());
}
catch
(Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
相关文章
1.
java soap 操做和发送soap消息
2.
java soap api操做和发送soap消息
3.
用 JAXM 发送和接收 SOAP 消息
4.
(六)发送、接收SOAP消息(1)
5.
SOAP消息分析
6.
SOAP消息建立
7.
SOAP消息结构
8.
向soap接口发送soap报文
9.
soap 实际操做
10.
带附件的 SOAP 消息
更多相关文章...
•
HTTP 消息结构
-
HTTP 教程
•
SOAP Header 元素
-
SOAP 教程
•
PHP开发工具
•
JDK13 GA发布:5大特性解读
相关标签/搜索
soap
soap+xml
webservice+wsdl+soap
消息
java神操做
做操
操做
java+api
发送
可靠消息
HTML
Java
HTTP/TCP
SOAP 教程
浏览器信息
XLink 和 XPointer 教程
java
开发工具
Java 8
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
在windows下的虚拟机中,安装华为电脑的deepin操作系统
2.
强烈推荐款下载不限速解析神器
3.
【区块链技术】孙宇晨:区块链技术带来金融服务的信任变革
4.
搜索引起的链接分析-计算网页的重要性
5.
TiDB x 微众银行 | 耗时降低 58%,分布式架构助力实现普惠金融
6.
《数字孪生体技术白皮书》重磅发布(附完整版下载)
7.
双十一“避坑”指南:区块链电子合同为电商交易保驾护航!
8.
区块链产业,怎样“链”住未来?
9.
OpenglRipper使用教程
10.
springcloud请求一次好用一次不好用zuul Name or service not known
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
java soap 操做和发送soap消息
2.
java soap api操做和发送soap消息
3.
用 JAXM 发送和接收 SOAP 消息
4.
(六)发送、接收SOAP消息(1)
5.
SOAP消息分析
6.
SOAP消息建立
7.
SOAP消息结构
8.
向soap接口发送soap报文
9.
soap 实际操做
10.
带附件的 SOAP 消息
>>更多相关文章<<