【问题标题】:PHP SOAP client and namespacesPHP SOAP 客户端和命名空间
【发布时间】: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=&gt;true。
  • 我刚刚尝试过,但我什至没有通过登录调用。如果我在通话后放一条简单的测试消息,我不会得到那个输出。
  • 我收到以下 PHP 错误:- PHP 致命错误:未捕获的 SoapFault 异常:[soap:Server] rt.exception.RTException:对象引用未设置为对象的实例

标签: php soap namespaces


【解决方案1】:

感谢 Piotr Olaszewski。终于得到了这个工作。问题不在于命名空间,而只是登录方法上缺少“会话”参数。令人失望的是,这导致调用失败,所以我无法使用 _getLastRequest 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多