【发布时间】:2015-08-26 11:16:40
【问题描述】:
我可以将以下 xml 文件发布到 web 服务,并且我得到一个响应 ID,这是我所期待的。
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Body>
<logon xmlns="http://tempuri.org/">
<username>USRNAME</username>
<password>b5059e852207a</password>
</logon>
</Body>
</Envelope>
我现在正在尝试将其转换为使用 PHP SOAP 客户端。我打了以下电话
$soapclient = new SoapClient('http://*********.co.uk/ws-b/WebservicesPTP.asmx?wsdl');
我可以得到一个函数列表:
$functions = $soapclient->__getFunctions();
但是当我尝试使用登录方法时:
$params = array('username' => 'USRNAME', 'password' => 'b5059e852207a');
$response = $soapclient->logon($params);
我没有得到任何回报。
我怀疑这与命名空间有关,但我在信封上有两个,一个在登录上。我需要这些吗?如果需要,如何将它们添加到 SOAP 客户端?
编辑: 我收到以下 PHP 错误:
PHP Fatal error: Uncaught SoapFault exception: [soap:Server] rt.exception.RTException: Object reference not set to an instance of an object
【问题讨论】:
-
很难说哪里出了问题,因为我们对 WSDL 一无所知。您可以使用:
__getLastRequest()跟踪您的请求正文。请记住在 SoapClient 构造函数中设置trace=>true。 -
我刚刚尝试过,但我什至没有通过登录调用。如果我在通话后放一条简单的测试消息,我不会得到那个输出。
-
我收到以下 PHP 错误:- PHP 致命错误:未捕获的 SoapFault 异常:[soap:Server] rt.exception.RTException:对象引用未设置为对象的实例
标签: php soap namespaces