如何将凭证传递给PHP SOAP Request

问题描述 投票:0回答:1

我需要根据此规范创建一个PHP SOAP客户端:

https://exdev.server.propctrl.com/v5.4/Basic/AgencyIntegration.svc?wsdl

我能够创建我的肥皂客户端,当我尝试调用一个函数时,它返回说访问被拒绝:

消息:访问被拒绝。

根据文档,没有我首先需要调用的验证/身份验证方法,但是看来我必须使用一种称为凭据的类型。

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授权我的请求。

有什么想法/建议吗?

更新1:

在此处输入图片说明

php soap authorization
1个回答
0
投票

身份验证方法应在一些文档中进行说明,无论如何,有一些使用HTTP标头进行身份验证的Soap服务,例如

            $soapClient->setHttpHeaders([
                'clientId' => $username,
                'clientSecret' => $password
            ]); 

但是请考虑密钥(在我的示例中为clientId和clientSecret)取决于服务实现。 您有服务文件吗?

© www.soinside.com 2019 - 2024. All rights reserved.