如果我用curl做响应,API就能工作:
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => config('healy.loginServerHost') . '/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => 'grant_type=refresh_token&refresh_token=mytoken&app_version=1.0',
CURLOPT_USERPWD => config('healy.loginServerUsername') . ':' . config('healy.loginServerPassword'),
]);
$response = curl_exec($curl);
我得到了一个200的响应。但是,当我尝试在GuzzleClient 6中使用相同的响应时,我得到了403禁止的响应。
$client = new GuzzleHttp\Client();
$response = $client->post(config('healy.loginServerHost') . '/token', [
'form_params' => [
'grand_type' => 'refresh_token',
'refresh_token' => 'mytoken',
'app_version' => 1.0,
],
'http_errors' => false,
'auth' => [
config('healy.loginServerUsername'),
config('healy.loginServerPassword'),
],
'options' => [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
],
]);
我在狂饮中错过了什么?这些电话不一样吗?
2条答案
按热度按时间eoigrqb61#
没有
options
request_option,我们在使用类GuzzleHttp\Handler\CurlMultiHandler
时使用异步请求的选项。使用curl
request_option代替。您也可以在请求中使用curl请求选项,作为选项数组的第三个参数。
但是我建议如果你使用的是Guzzle,那么你应该完全使用它。所以,你可以用Guzzle提供的很多请求选项来替换curl选项。
fafcakar2#
对于那些谁仍然挣扎与此可以添加用户代理头-
希望这能解决问题