我使用nusoap在PHP中编写了一个soap服务。它与我在PHP中编写的测试客户端一起工作正常,但是,我们的客户在vb.net中编写了他的客户端并且它无法工作。我看到没有错误,但服务没有正确解析他的请求。
我让nusoap生成WSDL,看起来很好。如果我将我发送的消息与他的一条消息进行比较,我确实看到了信封中的一些差异,但我不确定问题是在我的最终还是他的。
以下是好的和坏的回应。
好:
<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns6361:uploadDocument xmlns:ns6361="http://tempuri.org">
<__numeric_0>
<firmCode xsi:type="xsd:string">999*site1</firmCode>
<docID xsi:type="xsd:string">id</docID>
<docType xsi:type="xsd:string">tif</docType>
<document xsi:type="xsd:string">SUkqAMpDAAAmoFy..lots of data omitted here</document>
</__numeric_0>
</ns6361:uploadDocument>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
为:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://www.inassist.com/docupload"
xmlns:types="http://www.inassist.com/docupload/encodedTypes"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<q1:uploadDocument xmlns:q1="urn:server">
<firmCode xsi:type="xsd:string">999*site1</firmCode>
<docID xsi:type="xsd:string">0000007126</docID>
<docType xsi:type="xsd:string">PDF</docType>
<document xsi:type="xsd:base64Binary">JVBERi0xLj..data omitted...</document>
</q1>
</soap:Body>
</soap:Envelope>
任何人都可以指出我正确的方向吗?谢谢。
答案 0 :(得分:0)
在我看来,最好的问题是好的回复中的<__numeric_0>
标签。
如果你可以修改你的结束以消除对这个标签的需要,那么唯一的另一个可能的问题看起来就像uploadDocument
的命名空间,在错误的响应中是q1
并且{{1在好文件中。