在我的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
标记时是否有错误?
答案 0 :(得分:2)
在这个问题上工作了一天之后,找到了答案。在问我的问题后一分钟,但我想在案件中保留这个问题,有人有同样的问题。
答案: yii2 httpclient使用了两个不同的传输库:Streams(没有额外的PHP扩展并且被设置为默认值的wokrs)和cURL。
切换到cURL为" transport-type",上面的代码工作正常!
$this->client = new Client([
'baseUrl' => 'http://my.example.com',
'transport' => 'yii\httpclient\CurlTransport'])