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接口获取天气的信息;2,利用java调用soap一个特定的案例,可按自己的要求修改。
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 ...
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 ...
本文主要是探讨SAAJ(SOAP with Attachment API for Java),JAXM(Java API for XML Messaging),了解SOAP在j2ee开发中的作用与其接口。JAXM和SAAJ均支持针对B2B和Web服务应用程序、基于XML的消息交换,支持诸多行业...
soapAPI,包括所以方法名和参数,告诉开发者怎样调用soapAPI里面的方法。
jakarta.xml.soap-api-1.4.2.jar jakarta.xml.soap-api-1.4.2-javadoc.jar jakarta.xml.soap-api-1.4.2-sources.jar
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 ...
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 ...
标签:cxf、rt、apache、bindings、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 ...
为 maventa soap API 生成的 java 客户端 建造 mvn clean deploy 将以下内容添加到 maven <id>maventa-java-client-repo <url>...
jasper-soap-api-tools 适用于中国联通的Jasper Soap API工具。
目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找...
早期的基于 SOAP 的 JAVA 的 Web 服务规范 JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被JAX-WS规范取代,JAX-WS 是JAX-RPC 的演进 ...置公开的Web服务的相关信息和配置 SOAP 消息的相关信息。
1.8 Java SOAP编程API 1.9 带有复杂数据类型的Web服务 1.10 多线程端点服务发布程序 1.11 下一章 第2章 全面了解WSDL 2.1 WSDL在Web服务中的作用 2.2 WSDL文档结构 36 2.3 Amazon E-Commerce ...
1.8 Java SOAP编程API 1.9 带有复杂数据类型的Web服务 1.10 多线程端点服务发布程序 1.11 下一章 第2章 全面了解WSDL 2.1 WSDL在Web服务中的作用 2.2 WSDL文档结构 36 2.3 Amazon E-Commerce ...
北京在本技巧中,IBM开发人员RussellButek向我们介绍了JAX-RPC,这是一种JavaAPI,有了它,应用程序不需要理解SOAP消息传递协议的细节,就可以与Web服务通信。Web服务的基础之一是互操作性。意思是说Web服务相互之间...