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());
}
}
}
分享到:
相关推荐
Java调用SOAP(Simple Object Access Protocol)接口是Web服务交互中的常见操作,SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。本案例主要关注如何使用Java来实现SOAP请求并获取响应,具体我们...
在Java中,我们可以使用SAX或DOM API来解析和构建SOAP消息。DOM API允许我们直接操作XML文档的节点,而SAX则采用事件驱动的方式处理XML流。 2. **Servlet作为SOAP客户端** - 发送SOAP请求:Servlet可以使用`java...
本文将深入探讨如何在Java环境中构建和发送SOAP消息,同时也会提及到与给定的文件相关的编程概念。 首先,我们来看`Transporter.java`这个文件。通常情况下,`Transporter`类会扮演一个角色,负责处理HTTP传输和...
为了确保广泛的兼容性和可访问性,Lab Manager SOAP API遵循SOAP规范,支持各种开发平台,包括.NET、Java和其他使用SOAP作为通信协议的环境。 #### SOAP API安全性 安全性是Lab Manager SOAP API的重要组成部分。...
- `SOAPConnectionFactory`和`SOAPConnection`用于建立SOAP连接,发送和接收SOAP消息。 3. **WSDL(Web Service Description Language)**: - WSDL是SOAP服务的接口定义语言,它描述了服务的位置、使用的消息...
2. **WSDL(Web Services Description Language)**:SOAP Web服务通常由WSDL文件定义,这是一个XML文档,用于描述服务接口、操作、消息格式和绑定。Java开发者可以使用WSDL文件来生成客户端和服务端的代码。 3. **...
本文旨在深入讨论SAAJ(SOAP with Attachments API for Java)和JAXM(Java API for XML Messaging)这两个关键API在Java Web服务开发中的应用。为了更好地理解本文内容,读者应当对SOAP 1.1的基本规范有初步了解,...
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 ...
在Java中,SAAJ(SOAP with Attachments API for Java)和JAXB(Java Architecture for XML Binding)是处理SOAP消息的重要工具。SAAJ用于构建和解析SOAP消息,而JAXB则负责XML与Java对象之间的转换。 在实际开发中...
描述:ArcGIS Server SOAP API是一种强大的工具,允许开发者通过简单对象访问协议(SOAP)来访问和操作ArcGIS Server提供的多种GIS服务。这包括地图服务、地理编码服务、网络分析服务等,使得跨平台、跨语言的GIS...
在Java中,我们通常使用JAX-WS(Java API for XML Web Services)来创建和处理SOAP消息。JAX-WS允许你通过注解来定义服务接口和服务实现,以及客户端调用这些服务的方式。以下是一些关键的Java类和接口,用于操作...
3. **SOAP与Java的结合**:Java是广泛用于开发Web服务的编程语言,Java SOAP库如JAX-WS(Java API for XML Web Services)使得开发者可以轻松创建和消费SOAP Web服务。通过Java,你可以定义服务接口,编译为WSDL...
JAVA输出SOAP报文详解 SOAP(Simple Object Access Protocol)是一种基于XML的...输出SOAP报文是JAVA编程中的一种重要技术,通过使用SOAP API,可以轻松地创建、处理和转换SOAP报文,以便与其他系统进行交互和集成。
这个压缩包文件“SOAP实例程序,实现Java发送SOAP信息.rar”显然是一个Java项目,展示了如何使用Java来创建并发送SOAP消息。在本文中,我们将深入探讨SOAP协议、Java中的SOAP客户端实现以及与C#相关的上下文。 1. *...
在Java中,通常使用JAX-WS(Java API for XML Web Services)来处理SOAP消息,它提供了一种标准的方式来创建和消费Web服务。 4. **SOAP服务实现**:在Java中,可以通过实现一个接口或者继承特定的类来创建SOAP服务...
### SOAP API知识点详解 ...这些方法提供了对路由器配置和状态管理的重要支持,可以帮助开发者更好地理解和操作路由器的各种功能。通过合理利用这些API,可以实现自动化网络配置和监控,提高网络管理效率。
在提供的压缩包文件中,`05_soap`可能包含关于如何创建和发送SOAP消息的示例代码,`06_wsdl_client`和`05_soap_client`可能是SOAP客户端的实现,`06_wsdl`可能是一个或多个WSDL文档,用于描述服务接口。通过这些文件...
Java中的`javax.xml.soap`包提供了SOAPMessage、SOAPPart、SOAPEnvelope、SOAPHeader和SOAPBody等类,用于直接操作SOAP消息。 4. **处理SOAP响应**: 客户端接收到SOAP响应后,可以通过解析SOAPBody获取返回的...
在调用SOAP服务前,你需要一个WSDL文件,它定义了服务的接口、操作、消息格式和绑定信息。你可以通过WSDL URL获取此文件。 ### 3. 使用JAX-WS(Java API for XML Web Services) JAX-WS是Java平台上的标准API,用于...
javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 ...