1

我有一个由 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/"和Query 标签上的ns1:。

有没有办法让我的服务器在请求通过时知道它是什么命名空间?

谢谢,您的帮助将不胜感激。

4

0 回答 0