如何制作像这个xml片段的PHP SOAP Header?

时间:2016-12-07 19:33:14

标签: php soap soap-client soapheader

我试图制作一个看起来像这样的肥皂标题:

<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构造函数的参数添加什么,这就是我和#39;我正在尝试并且它一直无法进行身份验证:

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

有人可以解释我应该如何将xml中的标题翻译成php soapheader吗?

编辑:是的,agunn,我使用真实的用户名并通过,我得到了一个SoapFault异常说&#34;供应商未经授权!&#34;当我打肥皂时。

这里包括肥皂呼叫部分:

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

1 个答案:

答案 0 :(得分:0)

$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);