我需要连接到 TeraData SOAP API,该 API 现在需要与登录凭据一起发送授权基本标头。我不知道如何解决这个问题。添加基本授权标头时,我在 SoapUI 中获得了工作权限 - 请任何人帮助我直接获取代码:
这是 SoapUI 发送的标头,响应良好:
POST http://example.com/api/soap/v6 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 302
Host: example.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Authorization: Basic [user&pass-base64-encoded]
以下是我尝试设置 SoapClient 的方法:
$namespace = "http://ecircle.com/developer/ecmapi";
$wsdl = "https://sslh.teradatadmc.com/teradata/api/soap/v6?wsdl";
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0));
$login = 'xxx';
$password = 'yyy';
$header = new SoapHeader($namespace, 'Authorization: Basic',
base64_encode("$login:$password"));
$client->__setSoapHeaders($header);
它不被接受,我只是收到 HTTP/1.1 401 未经授权的错误
堆栈跟踪显示了我发送的标头 - 那里缺少授权部分。
public '__last_request_headers' => string 'POST /api/soap/v6 HTTP/1.1
Host: example.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.12
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 584
伙计,我太愚蠢了:
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0,
"login" => $login, "password" => $password) );
对于 HTTP 身份验证,可以使用登录名和密码选项来提供凭据。 https://www.php.net/manual/en/soapclient.soapclient.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)