我有一个由WSDL文件描述的工作SOAP服务器:http://pastebin.com/YXBbszqE。 但是,问题是远程客户端以这种格式发送消息:
<?xml version="1.0" standalone="no"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<Query>
<request>
<MerchantNumber>7436</MerchantNumber>
<RestoCode>9999</RestoCode>
<WaiterID>1</WaiterID>
<FolioInfo>
<FolioType>FolioTypeCard</FolioType>
<Folio>1234124234123123</Folio>
</FolioInfo>
</request>
</Query>
</soap12:Body>
</soap12:Envelope>
我的服务器拒绝了以下错误消息:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<env:Fault>
<env:Code>
<env:Value>rpc:ProcedureNotPresent</env:Value>
</env:Code>
<env:Reason>
<env:Text>Procedure not present</env:Text>
</env:Reason>
</env:Fault>
</env:Body>
</env:Envelope>
我做了一些调试,发现问题所在,但我不知道如何解决这个问题。有效的SOAP请求将是:
<?xml version="1.0" standalone="no"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://MD.org/">
<soap12:Body>
<ns1:Query>
<request>
<MerchantNumber>7436</MerchantNumber>
<RestoCode>9999</RestoCode>
<WaiterID>1</WaiterID>
<FolioInfo>
<FolioType>FolioTypeCard</FolioType>
<Folio>1234124234123123</Folio>
</FolioInfo>
</request>
</ns1:Query>
</soap12:Body>
</soap12:Envelope>
反应很好。请注意标题中的 xmlns:ns1 =“http://MD.org/”以及查询代码上的 ns1:。
我的服务器有没有办法知道请求到来时它是什么命名空间?
谢谢,非常感谢您的帮助。