这应该是太简单了,但我花了几个小时寻找答案,我真的被卡住了.我正在构建一个基本的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();
您可以通过
'json'
request option将常规数组作为JSON发送;这也会自动设置正确的标题:
$headers = [ 'NETOAPI_KEY' => env('NETO_API_KEY'),'NETOAPI_ACTION' => 'GetOrder' ]; $GetOrder = [ 'Filter' => [ 'OrderID' => 'N10139','OutputSelector' => ['OrderStatus'],],]; $client = new client(); $res = $client->post(env('NETO_API_URL'),[ 'headers' => $headers,'json' => $GetOrder,]);