PHP SoapClient-可能的名称间隔问题-非wsdl模式

PHP SoapClient-可能的名称间隔问题-非wsdl模式,php,web-services,soap,wsdl,Php,Web Services,Soap,Wsdl,我以前使用PHP的SoapClient库调用.NET服务时没有遇到太多问题,但现在我面临一个场景,即必须以非WSDL模式访问相同的服务 我似乎或多或少创建了正确的XML结构来发送给服务,但服务器似乎没有接收到我发送的变量 根据SOAPUI的输出,我应该尝试生成以下SOAP调用: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://someservices.

我以前使用PHP的SoapClient库调用.NET服务时没有遇到太多问题,但现在我面临一个场景,即必须以非WSDL模式访问相同的服务

我似乎或多或少创建了正确的XML结构来发送给服务,但服务器似乎没有接收到我发送的变量

根据SOAPUI的输出,我应该尝试生成以下SOAP调用:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://someservices.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <int:getService>
         <int:foo>String value for foo</int:foo>
         <int:bar>String value for bar</int:bar>
      </int:getService>
   </soapenv:Body>
</soapenv:Envelope>
我不确定是什么问题。现在我猜测这可能是一个xmlns属性问题。注意,SOAPUI调用在函数调用和参数前面指定int:。我试图指定这个xmlns,但没有成功。如您所见,Soap客户端调用生成的xmlns是:

xmlns:ns1

任何帮助都将不胜感激

事实证明,将名称空间标记为ns1而不是int并不是问题所在

问题是getService参数的前缀是名称空间ns1,而变量foo和bar则不是

因此,通过将“ns1:”附加到soapCall函数中的Soap参数来解决此问题,如下所示:

$response = $soapclient->__soapCall('getService', array( new SoapParam($foo, 'ns1:foo'), new SoapParam($bar, 'ns1:bar')), $options);
xmlns:ns1
$response = $soapclient->__soapCall('getService', array( new SoapParam($foo, 'ns1:foo'), new SoapParam($bar, 'ns1:bar')), $options);