通过 SOAP 将请求 XML 传递给 Call webservice 后更改请求
Change in Request XML after passing it to Call webservice via SOAP
下面的请求 xml 可以由在开发箱中运行良好的服务客户端存根代码形成。应用服务器是websphere-8.5.5.
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getPlanLookUpBySSN xmlns="http://example.com"><argLookupBySSNInput xmlns=""><applicationId>IVR</applicationId><client>PC</client><ivrInd>Y</ivrInd><scrollIndicator></scrollIndicator><scrollKey></scrollKey><ssn>12345</ssn><type>Dental</type><userId>IVR</userId><asOfDate></asOfDate></argLookupBySSNInput></getPlanLookUpBySSN></soapenv:Body></soapenv:Envelope>
相同的客户端存根代码将部署在 UAT 中。服务器 (WebSphere) 和服务 URL 与开发中的相同。但元素位置在 UAT 框中按字母顺序排序。因此,Web 服务不会接受请求 xml,而是抛出错误。
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getPlanLookUpBySSN xmlns="http://example.com"><argLookupBySSNInput xmlns=""><applicationId>IVR</applicationId><asOfDate></asOfDate><client>PC</client><ivrInd>Y</ivrInd><scrollIndicator></scrollIndicator><scrollKey></scrollKey><ssn>12345</ssn><type>Dental</type><userId>IVR</userId></argLookupBySSNInput></getPlanLookUpBySSN></soapenv:Body></soapenv:Envelope>
在上面 xml <asOfDate>
元素位置已更改。请帮助我们解决这个问题。
您可能需要修改 WSDL 并使架构 getPlanLookUpBySSN 元素按照如下固定顺序生成并重新生成您的客户端。像下面这样的东西。
标签使标签序列严格。
<xs:element name="getPlanLookUpBySSN">
<xs:complexType>
<xs:sequence>
<xs:element name="argLookupBySSNInput">
<xs:complexType>
<xs:sequence>
<xs:element name="applicationId" type="xs:string"></xs:element>
<xs:element name="asOfDate"></xs:element>
<xs:element name="client" type="xs:string"></xs:element>
<xs:element name="ivrInd" type="xs:string"></xs:element>
<xs:element name="scrollIndicator"></xs:element>
<xs:element name="scrollKey"></xs:element>
<xs:element name="ssn" type="xs:int"></xs:element>
<xs:element name="type" type="xs:string"></xs:element>
<xs:element name="userId" type="xs:string"></xs:element>
</xs:sequence>
<xs:attribute name="xmlns" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="xmlns" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
下面的请求 xml 可以由在开发箱中运行良好的服务客户端存根代码形成。应用服务器是websphere-8.5.5.
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getPlanLookUpBySSN xmlns="http://example.com"><argLookupBySSNInput xmlns=""><applicationId>IVR</applicationId><client>PC</client><ivrInd>Y</ivrInd><scrollIndicator></scrollIndicator><scrollKey></scrollKey><ssn>12345</ssn><type>Dental</type><userId>IVR</userId><asOfDate></asOfDate></argLookupBySSNInput></getPlanLookUpBySSN></soapenv:Body></soapenv:Envelope>
相同的客户端存根代码将部署在 UAT 中。服务器 (WebSphere) 和服务 URL 与开发中的相同。但元素位置在 UAT 框中按字母顺序排序。因此,Web 服务不会接受请求 xml,而是抛出错误。
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getPlanLookUpBySSN xmlns="http://example.com"><argLookupBySSNInput xmlns=""><applicationId>IVR</applicationId><asOfDate></asOfDate><client>PC</client><ivrInd>Y</ivrInd><scrollIndicator></scrollIndicator><scrollKey></scrollKey><ssn>12345</ssn><type>Dental</type><userId>IVR</userId></argLookupBySSNInput></getPlanLookUpBySSN></soapenv:Body></soapenv:Envelope>
在上面 xml <asOfDate>
元素位置已更改。请帮助我们解决这个问题。
您可能需要修改 WSDL 并使架构 getPlanLookUpBySSN 元素按照如下固定顺序生成并重新生成您的客户端。像下面这样的东西。 标签使标签序列严格。
<xs:element name="getPlanLookUpBySSN">
<xs:complexType>
<xs:sequence>
<xs:element name="argLookupBySSNInput">
<xs:complexType>
<xs:sequence>
<xs:element name="applicationId" type="xs:string"></xs:element>
<xs:element name="asOfDate"></xs:element>
<xs:element name="client" type="xs:string"></xs:element>
<xs:element name="ivrInd" type="xs:string"></xs:element>
<xs:element name="scrollIndicator"></xs:element>
<xs:element name="scrollKey"></xs:element>
<xs:element name="ssn" type="xs:int"></xs:element>
<xs:element name="type" type="xs:string"></xs:element>
<xs:element name="userId" type="xs:string"></xs:element>
</xs:sequence>
<xs:attribute name="xmlns" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="xmlns" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>