具有基本身份验证和代理设置的yii2-httpclient

时间:2016-08-12 09:10:18

标签: yii proxy yii2 basic-authentication

在我的Yii2应用程序中,我尝试从REST API中读取数据,该API受HTTP-Basic - Auth保护。另外,需要一个代理来连接REST api。 所以我选择了Yii httpclient-module来处理这个调用:

$client = new Client(['baseUrl' => 'http://my.example.com']);
$response = $client->createRequest()
        ->setMethod('get')
        ->setUrl('api/session')
        ->addHeaders(['Authorization' => 'Basic '.base64_encode("user:password")])
        ->setOptions([
            'proxy' => 'proxy.server:8000',
            'timeout' => 5, 
        ]);

运行此代码,我从服务器收到Bad URL in proxy request错误消息。 但是,如果我将URL从代码复制到浏览器(也连接到代理),一切正常:Basic-Auth窗口出现。

设置标题的Authorization标记时是否有错误?

1 个答案:

答案 0 :(得分:2)

在这个问题上工作了一天之后,找到了答案。在问我的问题后一分钟,但我想在案件中保留这个问题,有人有同样的问题。

答案: yii2 httpclient使用了两个不同的传输库:Streams(没有额外的PHP扩展并且被设置为默认值的wokrs)和cURL。

切换到cURL为" transport-type",上面的代码工作正常!

$this->client = new Client([
            'baseUrl' => 'http://my.example.com',
            'transport' => 'yii\httpclient\CurlTransport'])