PHP SOAP客户端请求的默认命名空间

时间:2013-06-12 17:28:24

标签: php soap soap-client

我有一个由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:

我的服务器有没有办法知道请求到来时它是什么命名空间?

谢谢,非常感谢您的帮助。

0 个答案:

没有答案