Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Axis2将二进制文件发送到Web服务?_Java_Web Services_Axis2_Axis - Fatal编程技术网

Java 如何使用Axis2将二进制文件发送到Web服务?

Java 如何使用Axis2将二进制文件发送到Web服务?,java,web-services,axis2,axis,Java,Web Services,Axis2,Axis,我在一个项目中使用了,现在我要搬到。我这样问是因为在Axis1.4中非常简单: myStub.addAttachment(new DataHandler(new FileDataSource("path_to_file"))); 您只需向存根添加一个数据处理程序,然后发送它。但在Axis2中,似乎不存在这种方法。所以我想知道将数据处理程序附加到存根的新方法是什么 当我在internet上搜索时,我发现您必须将DataHandler附加到MessageContext() 所以我照上面说的做了:

我在一个项目中使用了,现在我要搬到。我这样问是因为在Axis1.4中非常简单:

myStub.addAttachment(new DataHandler(new FileDataSource("path_to_file")));
您只需向存根添加一个数据处理程序,然后发送它。但在Axis2中,似乎不存在这种方法。所以我想知道将数据处理程序附加到存根的新方法是什么

当我在internet上搜索时,我发现您必须将DataHandler附加到
MessageContext
()

所以我照上面说的做了:

MessageContext messageContext = MessageContext.getCurrentMessageContext();
OperationContext operationContext = messageContext.getOperationContext(); 
MessageContext outMessageContext = operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
outMessageContext.addAttachment(new DataHandler(new FileDataSource("path_to_file")));
但问题是
MessageContext.getCurrentMessageContext()
返回null。我认为它不起作用,因为这个代码段应该在服务器端使用。我想要的是能够向服务器发送文件,而不是从服务器检索文件


我可能错过了什么。也许这不是解决问题的方法,无论如何,任何帮助都是非常感谢的。与此同时,我会继续在互联网上搜索,如果我找到了什么,我会告诉你:)

因此,过了一段时间,我找到了如何在Axis2文档上进行搜索的方法

转到名为“发送SwA类型附件”的第二部分,然后单击“和”。在这里,您将了解如何向服务器发送文件

这是他们提供的代码片段:

public void uploadFileUsingSwA(String fileName) throws Exception {

    Options options = new Options();
    options.setTo(targetEPR);
    options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
    options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
    options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
    options.setTo(targetEPR);

    ServiceClient sender = new ServiceClient(null,null);
    sender.setOptions(options);
    OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);

    MessageContext mc = new MessageContext();   
    mc.setEnvelope(createEnvelope());
    FileDataSource fileDataSource = new FileDataSource("test-resources/mtom/test.jpg");
    DataHandler dataHandler = new DataHandler(fileDataSource);
    mc.addAttachment("FirstAttachment",dataHandler);

    mepClient.addMessageContext(mc);
    mepClient.execute(true);
}
有关更多信息,请查看文档页面

干杯