我正在开发一个基于SOAP的Web服务API,它将由第三方系统使用。 WSDL文件和端点URL将与它们共享,并通过传递输入参数并获取响应来调用我的Web服务
到目前为止,我已经创建了Web服务API,包括WSDL,服务类,帮助程序类,DAO,Ibatis),并通过传递输入参数使用SOAP UI进行测试,请求命中数据库并返回响应。附加了WSDL文件和SOAP请求和响应。
我有两个问题,
第三方系统要求提供API文档和SOAP信封。我该怎么办?
第三方系统必须通过传递输入参数sQuoteRef来调用我的服务。他们通常会怎么做?我并不关心这里的客户端代码,但是第三方的请求会是什么样子以及我应该在WSDL或Java类中进行哪些更改以接收输入参数并传递给我的服务类?
< / LI> 醇>任何输入都有助于完成我的任务。非常感谢!
WSDL文件
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="EmpService" targetNamespace="http://emp.provider.integration.gi.sample.ie/EmpService/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://Emp.provider.integration.gi.sample.ie/EmpService/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="http://Emp.provider.integration.gi.sample.ie/EmpService/">
<xsd:element name="EmpRequestVO">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="sQuoteRef" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="EmpResponseVO">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" name="sQuoteStatus" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="GetEmpTransactionSoapIn">
<wsdl:part element="tns:EmpRequestVO" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetEmpTransactionSoapOut">
<wsdl:part element="tns:EmpResponseVO" name="parameters"/>
</wsdl:message>
<wsdl:portType name="EmpServiceSoap">
<wsdl:operation name="getEmpTransaction">
<wsdl:input message="tns:GetEmpTransactionSoapIn"/>
<wsdl:output message="tns:GetEmpTransactionSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="EmpServiceSoap" type="tns:EmpServiceSoap">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getEmpTransaction">
<soap:operation soapAction="getEmpTransaction" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="PLUSEmpServices">
<wsdl:port binding="tns:EmpServiceSoap" name="EmpServiceSOAP">
<soap:address location="http://localhost:9080/WebServices/services/EmpServiceSOAP"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
终点网址 http://localhost:9080/PLUSEmpServices/services/EmpServiceSOAP
SOAP REQUEST in SOAP UI
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtw="http://emp.provider.integration.gi.sample.ie/EmpService/">
<soapenv:Header/>
<soapenv:Body>
<rtw:EmpRequestVO>
<sQuoteRef>12123118</sQuoteRef>
</rtw:EmpRequestVO>
</soapenv:Body>
</soapenv:Envelope>
SOAP RESPONSE in SOAP UI
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p900:EmpResponseVO xmlns:p900="http://emp.provider.integration.gi.sample.ie/EmpService/">
<sQuoteStatus>Active</sQuoteStatus>
</p900:EmpResponseVO>
</soapenv:Body>
</soapenv:Envelope>
答案 0 :(得分:0)
第三方系统要求提供API文档和SOAP信封。我该怎么办?
要启动与外部各方的API集成,您的客户需要一个技术API文档,该文档将成为完整API集成的参考,并为团队之间的任何技术交流提供基础。技术文件可能包括以下细节:
不同可用网络服务API及其要求的简要说明。
API通信流程。如果客户端需要按特定顺序调用多个服务,这将非常有用。包括流程图将是解释系统流程的可能选项。
测试环境详细信息,如WSDL URL和访问凭据,如用户名,密码,代理代码等。
向服务器发送有效请求所需的所有字段的详细说明。字段详细信息可能包括以下内容:
一个。提起姓名。
湾描述
℃。数据类型。
d。最大长度。
即强制性,可选性或条件性。
F。可能的值(如果有)。
所有可能的响应代码很长,其描述由服务器API发送到客户端API,指示事务处理的成功或失败。例如(0000表示成功,E001表示验证错误,E002系统错误,9999未知错误等)。
注意:响应代码应涵盖各种拒绝情况。
安全部分,解释如何在客户端和服务器应用程序之间安全地交换数据。
一个。如果有的话,为部分或全部请求数据提及额外的加密机制。
湾与客户端的通信类型是通过VPN或公共访问 通过https URL。请注意,您在问题中提到的网址已部署在本地计算机中,并且无法公开提供。
所有可用API网络方法的示例SOAP请求和响应xml格式。
提及API连接的任何其他规则或约束。
第三方系统必须通过传递输入参数sQuoteRef来调用我的服务。他们通常会怎么做?我不关心这里的客户端代码,但是第三方的请求会是什么样子以及我应该在WSDL或Java类中做出哪些更改来接收输入参数并传递给我的服务类?
如果我理解正确,您会问我应该如何更改WSDL或Java类以正确接受客户端请求?通常服务器端API具有XML格式的优势需要交换,在您的情况下,它应该在WSDL中提及。因此,客户端将根据服务器WSDL URL中提到的定义创建有效请求。
进一步阅读我对如何从Java类生成WSDL很有用: