2
私のLaravelアプリケーションでは、定期的にGuzzleを使用してPOSTデータをAPIに送信する必要があります。POSTリクエストは郵便配達では動作しますが、Guzzleでは使用できません
APIは認証のためのベアラトークンを使用し、raw jsonを要求して受け入れます。テストするために、私はPostmanを使ってAPIにアクセスしました。
ポストマンヘッダ:
Accept:application/json
Authorization:Bearer [token]
Content-Type:application/json
そしてポストマンボディ:
{
"request1" : "123456789",
"request2" : "2468",
"request3" : "987654321",
"name" : "John Doe"
}
ポストマンは、レスポンスとして200、およびJSONオブジェクトを返します。
今、Guzzleで同じことを試してみると、ステータスコードは200になりますが、JSONオブジェクトは返されません。ここに私のGuzzle実装があります:
public function getClient($token)
{
return new Client([
'base_uri' => env('API_HOST'),
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json'
]);
}
$post = $client->request('POST', '/path/to/api', [
'json' => [
'request1' => 123456789,
'request2' => 2468,
'request3' => 987654321,
'name' => 'John Doe',
]
]);
GuzzleでJSONをポストするにはいくつかのトリックがありますか?そうでない場合、フードの下で何が起こっているのかをデバッグする方法はありますか?
私の人生の間、Postman POSTとGuzzle POSTの違いは何かを理解できません。
Guzzle 6? ... json_decode($ response-> getBody())を使用してjsonを応答から外していますか? – Serge