まず、目的に合わせて調整できるはずのテスト コードをいくつか示します ( form_params
GuzzleHttp のドキュメントも参照してください)。
public function validateRecaptcha()
{
$client = new Client;
$response = $client->request('POST', 'https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'secret' => env('RECAPTCHA_SECRET'),
'response' => Request::input('g-recaptcha-response'),
'remoteip' => Request::ip()
]
]);
return $response;
}
私はちょうど同じ問題に遭遇し、Laravel で応答オブジェクトを返そうとすると、ERR_INVALID_CHUNKED_ENCODING
. 一方、dd()
応答自体を実行すると、実際に見たいものがわかりました。
public function validateRecaptcha()
{
$client = new Client;
$response = $client->request('POST', 'https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'secret' => env('RECAPTCHA_SECRET'),
'response' => Request::input('g-recaptcha-response'),
'remoteip' => Request::ip()
]
]);
dd($response);
}
ERR_INVALID_CHUNKED_ENCODING
残念ながら、さらに調査を行わないと、クライアント ライブラリのオブジェクトをブラウザに返そうとするとなぜエラーが発生し続けるのか説明できませんが、最初の傾向としては、それはデータ タイプの問題であるということです。
あなたの質問に関する限り、あなたは実際に「リクエスト」を取り戻そうとしているのではなく、レスポンスを取り戻そうとしているのです。http://docs.guzzlephp.org/en/latest/quickstart.html#using-responsesによると、応答オブジェクトに含まれる API 応答を取得したい場合 (少なくとも私の場合はそうでした)、 'メソッドを使用したいでしょうgetBody()
:
public function validateRecaptcha()
{
$client = new Client;
$response = $client->request('POST', 'https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'secret' => env('RECAPTCHA_SECRET'),
'response' => Request::input('g-recaptcha-response'),
'remoteip' => Request::ip()
]
]);
return $response->getBody();
}
もちろん、それが JSON 応答 (REST) であると予想される場合は、単純に に渡してjson_decode()
連想配列を取得します。
public function validateRecaptcha()
{
$client = new Client;
$response = $client->request('POST', 'https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'secret' => env('RECAPTCHA_SECRET'),
'response' => Request::input('g-recaptcha-response'),
'remoteip' => Request::ip()
]
]);
return json_decode($response->getBody(), true); // true = assoc. array
}
それが役立つことを願っています!