SOAP:将用户和密码添加到 soap:address 位置 URL 不起作用?

SOAP: Add user and password to the soap:address location URL doesn't work?

当我 curl 这个 url 时,它起作用了:

curl http://OLM:OLM794%24@X.XXX.XXX.XXX:10080

但是,当我像这样在我的肥皂地址中调用它时,它不起作用:

<soap:address location="http://OLM:OLM794%24@X.XXX.XXX.XXX:10080/"/>

它告诉我:(SoapFault): Authorization Required

你知道为什么吗?

更新:

sw.xml

....
<wsdl:service name="Toto">
        <wsdl:port name="GazListeImpayesHttpSoap11Endpoint" binding="tns:TotoSoap11Binding">
            <soap:address location="http://OLM:OLM794%24@X.XXX.XXX.XXX:10080/web/services/Toto.TotoHttpSoap11Endpoint/"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

然后在我调用该 soap 的文件中:

file.php

<?php
$soap = new SoapClient('http://domaine.com/sw.xml');

var_dump($soap->__getFunctions()); //OK
var_dump($soap->__getTypes()); //OK

$result = $soap->__soapCall("method", array("parameters"=>array("args0"=>array("NUM"=> "123"))));
var_dump($result);
?>

结果:

(SoapFault): Authorization Required

我找到了解决办法,用户和密码应该在SoapClient方法中添加而不是直接在wsdl中添加soap:address location

像这样:

$user = "your user here";
$password = "your password here";
$url = "path of wsdl location here";
$credentials = array(
    'login' => $user,
    'password' => $password,
);

$soap = new SoapClient($url, $credentials);