Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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 将文件发送到安全的SOAP web服务_Java_Web Services_Soap_Apache Httpclient 4.x_Apache Httpcomponents - Fatal编程技术网

Java 将文件发送到安全的SOAP web服务

Java 将文件发送到安全的SOAP web服务,java,web-services,soap,apache-httpclient-4.x,apache-httpcomponents,Java,Web Services,Soap,Apache Httpclient 4.x,Apache Httpcomponents,我需要编写一个调用soapweb服务的客户机。我得到了wsdl和SOAP请求。它是一个安全的web服务,一个文件作为附件传递给该服务。我已经使用SOAPUI对其进行了测试,但需要编写一个Java程序来调用该服务 这是wsdl <definitions xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://sch

我需要编写一个调用soapweb服务的客户机。我得到了
wsdl
SOAP请求
。它是一个安全的web服务,一个文件作为附件传递给该服务。我已经使用
SOAPUI
对其进行了测试,但需要编写一个Java程序来调用该服务

这是wsdl

<definitions xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/integration/b2b" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" name="WS_VT_SECURED_INBOUND" targetNamespace="http://xmlns.oracle.com/integration/b2b">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/integration/b2b">
<element name="TransportFileRequest">
<complexType>
<sequence>
<element minOccurs="1" name="FileName" type="string"/>
<element minOccurs="1" name="FileType" type="string"/>
<element maxOccurs="1" minOccurs="1" name="messageID" type="string"/>
<element maxOccurs="1" minOccurs="1" name="senderID" type="string"/>
<element maxOccurs="1" minOccurs="1" name="checksum" type="string"/>
<element maxOccurs="1" minOccurs="1" name="timestamp" type="string"/>
<element maxOccurs="1" minOccurs="1" name="transportVersion" type="string"/>
<element maxOccurs="1" minOccurs="1" name="payload" type="anyType"/>
</sequence>
</complexType>
</element>
<element name="TransportFileResponse">
<complexType>
<sequence>
<element maxOccurs="1" minOccurs="1" name="Status" type="string"/>
<element maxOccurs="unbounded" minOccurs="0" name="ErrorMessage" type="string"/>
</sequence>
</complexType>
</element>
<element name="error" type="string"/>
</schema>
</types>
<message name="TransportFileResponseMessage">
<part name="FileTransportResponse" element="tns:TransportFileResponse"></part>
</message>
<message name="faultMessage">
<part name="faultMessage" element="tns:error"></part>
</message>
<message name="TransportFileRequestMessage">
<part name="FileTransportRequest" element="tns:TransportFileRequest"></part>
</message>
<portType name="TransportFilePort">
<operation name="sendFile">
<input message="tns:TransportFileRequestMessage"></input>
<output message="tns:TransportFileResponseMessage"></output>
<fault name="faultMessage" message="tns:faultMessage"></fault>
</operation>
</portType>
<binding name="TransportFilePortBinding" type="tns:TransportFilePort">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sendFile">
<soap:operation soapAction="sendFile" style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="faultMessage">
<soap:fault name="faultMessage" use="literal"/>
</fault>
</operation>
</binding>
<service name="receiveFile_WS_VT_SECURED_INBOUND">
<port name="TransportFilePort_pt" binding="tns:TransportFilePortBinding">
<soap:address location="https://hostname:9443/wsx/services/receiveFile_WS_VT_SECURED_INBOUND"/>
</port>
</service>
</definitions>

这就是SOAP请求的样子

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:b2b="http://xmlns.oracle.com/integration/b2b">
   <soapenv:Header/>
   <soapenv:Body>
      <b2b:TransportFileRequest>
          <b2b:FileName>120_VERMONT_ACH_Sanity11march1.dat</b2b:FileName>
         <b2b:FileType>120</b2b:FileType>
         <b2b:MessageID>3454</b2b:MessageID>
         <b2b:SenderID>ekrjekrj</b2b:SenderID>
         <b2b:checksum>b2ee8af554ab6933085d341b71765bc8</b2b:checksum>
         <b2b:timestamp>3434</b2b:timestamp>
         <b2b:transportServiceVersion>4343</b2b:transportServiceVersion>
         <b2b:payload>120_VERMONT_ACH_Sanity11march1.dat</b2b:payload>
      </b2b:TransportFileRequest>
   </soapenv:Body>
</soapenv:Envelope>

120_佛蒙特州_ACH_Healthy11march1.dat
120
3454
ekrjekrj
b2ee8af554ab6933085d341b71765bc8
3434
4343
120_佛蒙特州_ACH_Healthy11march1.dat
在上面的示例中,文件附件是

<b2b:payload>120_VERMONT_ACH_Sanity11march1.dat</b2b:payload>
120_佛蒙特州_ACH_sanitary11march1.dat
我知道有多种方法可以做到这一点,比如使用
apachehttpclient
library或任何其他方法。但我从未使用过Web服务,所以对它了解不多。尽管我已经开始使用ApacheHTTP客户端,但无法做到这一点。对于apache问题,我已经发布了一个问题,但到目前为止还没有提供解决方案。 使用ApacheHTTP客户端不必强制实现同样的功能


请告诉我怎么做

使用与JAX-WS兼容的框架,如或,并遵循自顶向下的方法

这些框架提供的工具将帮助您从WSDL开始生成适当的Java客户机类

如果您想使用HTTP客户端,您必须自己处理SOAP信封,使用
java.xml.SOAP
中的类。看