在我的Yii2应用程序中,我尝试从REST中读取数据,REST受保护。另外,需要一个代理来控制REST。因此,我选择了Yii模块来处理这个调用:
$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窗口出现了。
设置标头的Authorization
标记时是否有错误?
发布于 2016-08-12 09:16:56
在为这个问题工作了一天之后,在找到了答案。在问完我的问题后的一分钟,但我想把这个问题保留在这样的情况下,那就是有人有同样的问题。
答: yii2 httpclient使用两个不同的传输库:流 (它没有额外的流扩展并设置为默认)和cURL。
切换到cURL作为“传输类型”,上面的代码工作得很好!
$this->client = new Client([
'baseUrl' => 'http://my.example.com',
'transport' => 'yii\httpclient\CurlTransport'])
https://stackoverflow.com/questions/38914180
复制相似问题