这应该很简单,但我花了几个小时寻找答案并且真的被困住了。我正在构建一个基本的 Laravel 应用程序,并使用 Guzzle 来替换我目前正在发出的 CURL 请求。所有 CURL 函数都在主体中使用原始 JSON 变量。
我正在尝试创建一个工作的 Guzzle 客户端,但服务器正在响应“无效请求”,我只是想知道我发布的 JSON 是否有问题。我开始怀疑您是否不能在 Guzzle POST 请求正文中使用原始 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();
原文由 Jason Hill 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过
'json'
请求选项 将常规数组作为 JSON 发送;这也会自动设置正确的标题:请注意,Guzzle 在后台应用
json_encode()
没有任何选项;如果您需要任何定制,建议您自己做一些工作