1、导入的类大致如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import org.apache.axiom.attachments.Attachments;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.OperationClient;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.axis2.context.MessageContext;
2、主要代码大致如下:
private static EndpointReference targetEPR = new EndpointReference("soap 的地址");
Options options = new Options();
options.setTo(targetEPR);
options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
// Increase the time out when sending large attachments
options.setTimeOutInMilliSeconds(100000);
options.setTo(targetEPR);
//urn后面跟的是soap消息的名字
options.setAction("urn:importTreeFile");
ConfigurationContext configContext = ConfigurationContextFactory
.createConfigurationContextFromFileSystem(null, null);
ServiceClient sender = new ServiceClient(configContext, null);
sender.setOptions(options);
OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);
//构建soap请求,并设置contentID,soap是通过contentID来找对应的文件的
ImportTreeFileRequestMsgDocument msg = ImportTreeFileRequestMsgDocument .Factory.newInstance()
ImportTreeFileRequestMsgDocument.setContentID("file");
DataHandler dh = null;
MessageContext mc = new MessageContext();
FileDataSource fds = new FileDataSource("文件名”);
try {
dh = new DataHandler(fds);
} catch (RuntimeException e) {
e.printStackTrace();
}
Attachments att = new Attachments();
att.addDataHandler("file", dh);
mc.setAttachmentMap(att);
SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope env = fac.getDefaultEnvelope();
env.getBody().addChild(toOM(msg, false));
mc.setEnvelope(env);
mepClient.addMessageContext(mc);
mepClient.execute(true);
readAttachment(mc);
private org.apache.axiom.om.OMElement toOM(
com.huawei.www.ngin.routetree.ImportTreeFileRequestMsgDocument param, boolean optimizeContent) {
org.apache.axiom.om.impl.builder.StAXOMBuilder builder = new org.apache.axiom.om.impl.builder.StAXOMBuilder(
org.apache.axiom.om.OMAbstractFactory.getOMFactory(), new org.apache.axis2.util.StreamWrapper(param
.newXMLStreamReader()));
org.apache.axiom.om.OMElement documentElement = builder.getDocumentElement();
((org.apache.axiom.om.impl.OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private void readAttachment(org.apache.axis2.context.MessageContext messageContext) {
String contentID = messageContext.getAttachmentMap().getAllContentIDs()[0];
DataHandler dh = messageContext.getAttachment(contentID);
dh.getDataSource().getName();
InputStream is = null;
try {
is = dh.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println("client read2:" + line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
在提供的压缩包文件“cxf-ws-restful-spring-server”中,包含了使用CXF、SOAP和RESTful的示例项目。通过访问“http://localhost:8080/cxf-ws-restful-spring-server/ws63”,我们可以看到这些服务的实际运行效果。...
SOAP(Simple Object ...总的来说,了解SOAP协议、如何在Java中实现SOAP请求以及解析WSDL文件是Web服务开发的关键技能。通过实践和学习这些知识点,开发者能够创建和消费跨平台的Web服务,实现不同系统的互操作性。
2. **WSDL(Web Services Description Language)**:WSDL是一个XML格式的规范,用于描述SOAP Web服务的接口。它定义了服务的位置、使用的消息结构以及操作的绑定。在开发SOAP服务时,需要编写WSDL文件来让其他...
在Windows环境下,可以创建一个批处理(.bat)文件来自动化这个过程。批处理文件通常包含调用服务器框架命令行工具的命令,例如: ``` java -cp axis.jar;wsdl4j.jar;activation.jar org.apache.axis.wsdl.fromJava ...
在本例中,"soapClient.zip"是一个包含SOAP客户端实现的压缩包,支持SOAP 1.1和SOAP 1.2两个版本的协议。 SOAP 1.1和SOAP 1.2的主要区别在于它们的规范更新和改进,包括错误处理、消息结构和协议层的增强。SOAP 1.2...
1. **webservices.xml**:这是一个配置文件,通常用于定义SOAP服务的元数据,包括服务端点、操作、绑定和消息格式等。开发者会在这里指定服务的URL、服务接口、实现类等关键信息,使得SOAP客户端可以找到并调用服务...
标题中的“一个支持SOAP11和12规范的PHP客户端”指的是一个PHP开发的软件工具,它能够处理基于SOAP(Simple Object Access Protocol)1.1和1.2版本的Web服务请求。SOAP是一种用于交换结构化和类型化的信息的协议,常...
2. **SOAP调用**:允许用户选择一个操作,填写参数,并发送SOAP请求。工具会展示响应结果,帮助开发者验证服务是否按预期工作。 3. **调试支持**:提供详细的请求和响应日志,便于调试问题。 4. **自动化测试**:...
- 创建XML文档对象:使用`IXMLDOMDocument`接口创建一个新的XML文档实例,用于构建SOAP请求。 - 编写SOAP请求:根据Web服务的WSDL(Web Service Description Language)定义,手动编写或者利用工具自动生成SOAP...
2. **WSDL(Web Services Description Language)**:SOAP Web服务通常由WSDL文件定义,这是一个XML文档,用于描述服务接口、操作、消息格式和绑定。Java开发者可以使用WSDL文件来生成客户端和服务端的代码。 3. **...
2. **HTTP客户端支持**:为了通过HTTP发送SOAP请求,可能包含了一个HTTP客户端接口或实现。 3. **WSDL(Web Services Description Language)解析器**:WSDL文件定义了Web服务的接口,SOAP库可能包含解析这些文件的...
【Qt+vs2010编写的soap通信demo】是一个示例项目,它演示了如何在Qt环境中结合Visual Studio 2010进行SOAP(Simple Object Access Protocol)通信的实现。SOAP是一种基于XML的协议,用于在Web服务中交换结构化和类型...
在这个"apache soap的hello例子"中,我们将探讨如何使用Apache SOAP实现一个简单的“Hello World”服务。 首先,让我们理解SOAP的基本结构。SOAP消息通常包含三个主要部分:Header、Body和Envelope。Header用于传递...
发送端发出一个SOAP请求,接收端处理后返回一个SOAP响应。 3. 绑定:SOAP支持多种传输协议,最常见的是HTTP,但也可以是SMTP、FTP等。绑定定义了如何将SOAP消息映射到这些传输协议上。 4. WSDL(Web Services ...
Delphi的代码生成器能够自动生成WSDL(Web服务描述语言)文件,这是一个XML文档,描述了Web服务的接口和消息格式,方便客户端进行绑定和调用。 文件"D6 SOAP_WEB SERVICE程序设计下.pdf"很可能是关于这个主题的详细...
在IT行业中,PHP是一种广泛使用的服务器端脚本语言,尤其在构建动态网站和Web服务方面。SOAP(简单对象访问协议)则是一种轻量级的...这个项目提供了一个实际操作的起点,你可以在此基础上扩展和定制自己的SOAP应用。
这些操作通常通过WSDL(Web Services Description Language)文件进行描述,WSDL文件是一个XML文档,定义了服务的接口、消息格式和绑定方式。 3. **客户端实现程序**: 客户端程序通过解析WSDL文件理解服务的接口...
这通常包括生成服务接口的客户端代理代码,以及处理服务器端的SOAP请求和响应。通过这种方式,gSOAP使得开发者能够专注于业务逻辑,而不是底层的网络通信细节。 【标签】:"soap" SOAP是Web服务的核心协议之一,它...
**SOAP(Simple Object Access Protocol)**是一个基于XML的协议,用于在Web服务中交换结构化和类型化的信息。它允许应用程序通过HTTP等传输协议进行通信,使得不同平台上的软件能够相互通信,实现数据集成。 **一...