我需要根据此规范创建一个PHP SOAP客户端:
https://exdev.server.propctrl.com/v5.4/Basic/AgencyIntegration.svc?wsdl
我能够创建我的soap客户端,当我尝试调用一个函数时,它返回说访问被拒绝:
消息:访问被拒绝。
根据文档,没有我首先需要调用的验证/身份验证方法,但是看来我必须使用一种称为凭据的类型。
struct Credentials {字符串密码;字符串用户名; }
然后我尝试创建一个凭据对象:
class Credentials {
public function __construct($username, $password)
{
$this->username = $username;
$this->password = $password;
}
}
并为其分配新值并在我的SoapHeaders中使用它:
$credentials = new Credentials($username, $password);
$header = new SoapHeader('http://localhost','Credentials',$credentials,false);
$client->__setSoapHeaders($header);
当我使用一个函数时,我仍然遇到相同的错误:
echo "<pre>";
try {
$response = $client->__soapCall("EchoAuthenticated", array("EchoAuthenticated" => "asdfasdf"));
var_dump($response);
}
//catch exception
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
消息:访问被拒绝。
我想我的问题是我不知道在哪里/如何通过凭据传递API来授权我的请求。
有什么想法/建议吗?
update1:
答案 0 :(得分:0)
应该在一些文档中说明身份验证方法,例如,有使用HTTP标头进行身份验证的Soap服务,例如
$soapClient->setHttpHeaders([
'clientId' => $username,
'clientSecret' => $password
]);
但是请考虑键(在我的示例中为clientId和clientSecret)取决于服务实现。 您有服务文件吗?