如何设置这样的soap头(php)

如何设置这样的soap头(php),php,soap,Php,Soap,我收到了一个soap查询示例: POST https://000.0.0.0:8181/wsForWeb/webService HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 SOAPAction: "" Authorization: Basic username:password Content-Length: 293 Host: 000.00.00.00:8181 Connection:

我收到了一个soap查询示例:

POST https://000.0.0.0:8181/wsForWeb/webService HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Authorization: Basic username:password
Content-Length: 293
Host: 000.00.00.00:8181
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws/">
<soapenv:Header/>
 <soapenv:Body>
  ....
 </soapenv:Body>
</soapenv:Envelope>

但我得到认证错误。我做错了什么?

您没有在soap头中传递登录凭据

$params = array(
   "login" => "username", 
   "password" => "password", 
);

$client = new SoapClient($wsdlURL, $params);
其中,$wsdlURL是包含Soap调用所在服务器url的变量

这是使用基本身份验证实现Soap客户机的最常用方法

参考PHP官方文档:


希望这会有所帮助

谢谢你,吉奥瓦兹。这是我使用的第一种方法。没有运气-身份验证错误。这就是为什么我去设置一个标题。还是没有运气。我应该问服务器所有者一些额外的问题吗?他说服务器需要一个完全相同的标题:“Authorization:Basic username:password”,但我不知道应该如何准确地传递数据。这很奇怪,因为我发布的方法是实现基本soap身份验证的标准方法。我认为你应该检查你通过这个方法发送的头,并检查你使用的凭据是否正确。谢谢,解决了。最后,tje的问题在另一边。
$params = array(
   "login" => "username", 
   "password" => "password", 
);

$client = new SoapClient($wsdlURL, $params);