【问题标题】:How to make PHP SOAP Header like this xml snippet?如何制作像这个 xml 片段这样的 PHP SOAP Header?
【发布时间】:2016-12-07 19:33:13
【问题描述】:

我正在尝试制作一个如下所示的肥皂标题:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <a-user xmlns="a">testName</a-user>
    <a-pass xmlns="a">testPassword</a-pass>
  </s:Header>
  <s:Body>
    ...
  </s:Body>
</s:Envelope>

我对肥皂很陌生,所以我很确定我只是不明白我应该为 SoapHeader 构造函数的参数输入什么,这是我目前正在尝试的,但它一直失败进行身份验证:

        $authHeader = new SoapHeader("http://schemas.xmlsoap.org/soap/envelope/", "Envelope", array("Header" => array("a-user" => "testName", "a-pass" => "testPassword")));

有人可以解释一下我应该如何将该标头从 xml 转换为 php soapheader 吗?

编辑:是的,阿贡,我使用的是真实用户名并通过,我收到 SoapFault 异常,提示“供应商未授权!”当我拨打我的soapCall时。

这是包含的肥皂调用部分:

$this->client->__setSoapHeaders($authHeader);
$response = $this->client->__soapCall("Foo", $params);

【问题讨论】:

  • 所以,@uRockNinja,当您说代码 sn-p 中的 Envelope 构造函数是您“当前正在尝试的”时,您的意思不是字面意思,对吗?也就是说,您是在您的真实代码中使用真实的用户名和密码,对吗?如果是这样,您能否更具体地说明您的失败消息或代码?您的代码 sn-p 看起来是一个合理的尝试,因此帮助者可能需要更多信息才能提供帮助。
  • 你能添加你所有的肥皂电话部分吗?

标签: php soap soap-client soapheader


【解决方案1】:
$authHeader = new SoapHeader("http://schemas.xmlsoap.org/soap/envelope/", "Envelope", array("Header" => array("a-user" => "testName", "a-pass" => "testPassword")));

根据 SoapClient 规范,您应该像这样尝试

$this->client->__setSoapHeaders(array($authHeader));
$response = $this->client->__soapCall("Foo", $params);

【讨论】:

  • 我忘了说您可以打印/转储您的请求以查看它的外观。使用 echo $this->client->__getLastRequest();
猜你喜欢
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
相关资源
最近更新 更多