これは非常に単純なはずですが、答えを探すために何時間も費やしてきて、本当に行き詰まっています。私は基本的なLaravel=アプリケーションを構築しており、現在作成しているCURLリクエストをGuzzleで置き換えています。すべてのCURL関数は、本体で未加工のJSON変数を利用しています。
機能するGuzzleクライアントを作成しようとしていますが、サーバーが「無効なリクエスト」で応答しており、投稿しているJSONで何か怪しいことが起こっているのではないかと思っています。 Guzzle POST request bodyで未加工のJSONを使用できないかどうか疑問に思い始めていますか?サーバーから有効な応答を受け取っているのでヘッダーが機能していることと、JSONが現在CURLリクエストで機能しているので有効です。
どんな助けでも大歓迎です。
$headers = array(
'NETOAPI_KEY' => env('NETO_API_KEY'),
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'NETOAPI_ACTION' => 'GetOrder'
);
// JSON Data for API post
$GetOrder = '{
"Filter": {
"OrderID": "N10139",
"OutputSelector": [
"OrderStatus"
]
}
}';
$client = new client();
$res = $client->post(env('NETO_API_URL'), [ 'headers' => $headers ], [ 'body' => $GetOrder ]);
return $res->getBody();
'json'
リクエストオプション ;を使用して、通常の配列をJSONとして送信できます。これにより、適切なヘッダーも自動的に設定されます。
$headers = [
'NETOAPI_KEY' => env('NETO_API_KEY'),
'Accept' => 'application/json',
'NETOAPI_ACTION' => 'GetOrder'
];
$GetOrder = [
'Filter' => [
'OrderID' => 'N10139',
'OutputSelector' => ['OrderStatus'],
],
];
$client = new client();
$res = $client->post(env('NETO_API_URL'), [
'headers' => $headers,
'json' => $GetOrder,
]);
おそらくボディのMIMEタイプを設定する必要があります。これは、setBody()メソッドを使用して簡単に行うことができます。
$request = $client->post(env('NETO_API_URL'), ['headers' => $headers]);
$request->setBody($GetOrder, 'application/json');