我尝试在Laravel 5.3应用程序中使用GuzzleHttp
连接到https://api.example.com
(请注意https
)。
<?php
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.example.com/accounts', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => "Token $token"
]
]);
var_dump($res->getBody());
但是,我收到的错误是它无法在端口80(!)上连接,尽管网址中有https
。即使我指定端口443(例如https://api.example.com:443/accounts
),它仍然会给我关于端口80的错误:
cURL error 7: Failed to connect to api.example.com port 80:
Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
为什么它不会在端口443上连接?为什么尝试连接端口80?
答案 0 :(得分:2)
在这里回答我自己的问题。我对此进行了更多调查,发现我在申请if let id = (rowItem.valueForProperty(MPMediaItemPropertyAlbumPersistentID) as? NSNumber)?.unsignedLongLongValue {
// ...
}
时获得301 Moved Permanently
/ Location: http://api.example.com/accounts
我感到困惑的是为什么我会从https://api.example.com/accounts
重定向到https
,但发现问题在于api。事实证明你必须在最后添加一个斜杠。 http
不会重定向到端口80,但可以正常工作。
答案 1 :(得分:0)
您是否错过了令牌变量的$(以及双引号)?
也许你的意思是'Authorization' => "Token {$token}"
可能是因为错误的身份验证标头导致重定向