`
nice_xiha
  • 浏览: 2692 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何在soap请求里绑定一个文件

    博客分类:
  • soap
 
阅读更多
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 实现SOAP 协议和RESTful风格 两种类型的webservice接口

    在提供的压缩包文件“cxf-ws-restful-spring-server”中,包含了使用CXF、SOAP和RESTful的示例项目。通过访问“http://localhost:8080/cxf-ws-restful-spring-server/ws63”,我们可以看到这些服务的实际运行效果。...

    soap协议请求与分析.rar_ Soap_SOAP java_WSDL_java soap_soap

    SOAP(Simple Object ...总的来说,了解SOAP协议、如何在Java中实现SOAP请求以及解析WSDL文件是Web服务开发的关键技能。通过实践和学习这些知识点,开发者能够创建和消费跨平台的Web服务,实现不同系统的互操作性。

    Soap webService 需要的 资源包 jar文件

    2. **WSDL(Web Services Description Language)**:WSDL是一个XML格式的规范,用于描述SOAP Web服务的接口。它定义了服务的位置、使用的消息结构以及操作的绑定。在开发SOAP服务时,需要编写WSDL文件来让其他...

    soap服务器配制和WSDL文件的生成,生成WSDL文件的bat命令的编写,加soap相关的包

    在Windows环境下,可以创建一个批处理(.bat)文件来自动化这个过程。批处理文件通常包含调用服务器框架命令行工具的命令,例如: ``` java -cp axis.jar;wsdl4j.jar;activation.jar org.apache.axis.wsdl.fromJava ...

    soapClient.zip

    在本例中,"soapClient.zip"是一个包含SOAP客户端实现的压缩包,支持SOAP 1.1和SOAP 1.2两个版本的协议。 SOAP 1.1和SOAP 1.2的主要区别在于它们的规范更新和改进,包括错误处理、消息结构和协议层的增强。SOAP 1.2...

    SOAP

    1. **webservices.xml**:这是一个配置文件,通常用于定义SOAP服务的元数据,包括服务端点、操作、绑定和消息格式等。开发者会在这里指定服务的URL、服务接口、实现类等关键信息,使得SOAP客户端可以找到并调用服务...

    一个支持SOAP11和12规范的PHP客户端

    标题中的“一个支持SOAP11和12规范的PHP客户端”指的是一个PHP开发的软件工具,它能够处理基于SOAP(Simple Object Access Protocol)1.1和1.2版本的Web服务请求。SOAP是一种用于交换结构化和类型化的信息的协议,常...

    webservice工具,针对wsdl、soap进行测试的小软件

    2. **SOAP调用**:允许用户选择一个操作,填写参数,并发送SOAP请求。工具会展示响应结果,帮助开发者验证服务是否按预期工作。 3. **调试支持**:提供详细的请求和响应日志,便于调试问题。 4. **自动化测试**:...

    vc++连接webservice soap协议

    - 创建XML文档对象:使用`IXMLDOMDocument`接口创建一个新的XML文档实例,用于构建SOAP请求。 - 编写SOAP请求:根据Web服务的WSDL(Web Service Description Language)定义,手动编写或者利用工具自动生成SOAP...

    java+soap+webservice 调用模拟

    2. **WSDL(Web Services Description Language)**:SOAP Web服务通常由WSDL文件定义,这是一个XML文档,用于描述服务接口、操作、消息格式和绑定。Java开发者可以使用WSDL文件来生成客户端和服务端的代码。 3. **...

    soap.jar

    2. **HTTP客户端支持**:为了通过HTTP发送SOAP请求,可能包含了一个HTTP客户端接口或实现。 3. **WSDL(Web Services Description Language)解析器**:WSDL文件定义了Web服务的接口,SOAP库可能包含解析这些文件的...

    Qt+vs2010编写的soap通信demo

    【Qt+vs2010编写的soap通信demo】是一个示例项目,它演示了如何在Qt环境中结合Visual Studio 2010进行SOAP(Simple Object Access Protocol)通信的实现。SOAP是一种基于XML的协议,用于在Web服务中交换结构化和类型...

    apache soap的hello例子

    在这个"apache soap的hello例子"中,我们将探讨如何使用Apache SOAP实现一个简单的“Hello World”服务。 首先,让我们理解SOAP的基本结构。SOAP消息通常包含三个主要部分:Header、Body和Envelope。Header用于传递...

    SOAP(SimpleObjectAccessProtocol(简单对象访问协议))

    发送端发出一个SOAP请求,接收端处理后返回一个SOAP响应。 3. 绑定:SOAP支持多种传输协议,最常见的是HTTP,但也可以是SMTP、FTP等。绑定定义了如何将SOAP消息映射到这些传输协议上。 4. WSDL(Web Services ...

    D6 SOAP_WEB SERVICE

    Delphi的代码生成器能够自动生成WSDL(Web服务描述语言)文件,这是一个XML文档,描述了Web服务的接口和消息格式,方便客户端进行绑定和调用。 文件"D6 SOAP_WEB SERVICE程序设计下.pdf"很可能是关于这个主题的详细...

    PHP的soapDemo

    在IT行业中,PHP是一种广泛使用的服务器端脚本语言,尤其在构建动态网站和Web服务方面。SOAP(简单对象访问协议)则是一种轻量级的...这个项目提供了一个实际操作的起点,你可以在此基础上扩展和定制自己的SOAP应用。

    SOAP数据传输协议

    这些操作通常通过WSDL(Web Services Description Language)文件进行描述,WSDL文件是一个XML文档,定义了服务的接口、消息格式和绑定方式。 3. **客户端实现程序**: 客户端程序通过解析WSDL文件理解服务的接口...

    SoapToolkit20

    这通常包括生成服务接口的客户端代理代码,以及处理服务器端的SOAP请求和响应。通过这种方式,gSOAP使得开发者能够专注于业务逻辑,而不是底层的网络通信细节。 【标签】:"soap" SOAP是Web服务的核心协议之一,它...

    一个关于soap学习资料

    **SOAP(Simple Object Access Protocol)**是一个基于XML的协议,用于在Web服务中交换结构化和类型化的信息。它允许应用程序通过HTTP等传输协议进行通信,使得不同平台上的软件能够相互通信,实现数据集成。 **一...

Global site tag (gtag.js) - Google Analytics