这应该很简单,但我花了几个小时寻找答案,我真的卡住了。我正在构建一个基本的Laravel应用程序,并使用Guzzle来替换我目前提出的卷曲请求。所有CURL函数都使用主体中的原始JSON变量。
我试着创建一个工作的客户端,但是服务器回应‘无效请求’,我想知道我发布的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();
您可能需要设置主体mime类型。使用setBody()方法可以很容易地做到这一点。
$request = $client->post(env('NETO_API_URL'), ['headers' => $headers]);
$request->setBody($GetOrder, 'application/json');
狂饮7这里
下面对我来说适用于原始json输入
$data = array(
'customer' => '89090',
'username' => 'app',
'password' => 'pwd'
);
$url = "http://someendpoint/API/Login";
$client = new \GuzzleHttp\Client();
$response = $client->post($url, [
'headers' => ['Content-Type' => 'application/json', 'Accept' => 'application/json'],
'body' => json_encode($data)
]);
print_r(json_decode($response->getBody(), true));
由于某些原因,直到我在响应中使用json_decode,输出都没有格式化。
您可以通过'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,
]);
问题内容: 如何访问expressjs给我的请求对象的原始内容? 问题答案: 除非添加中间件,否则默认值不会缓冲数据。一种简单的解决方案是按照下面@Stewe的答案中的示例进行操作,该示例将自己连接所有数据。例如 不利的一面是,您现在已将所有POST正文内容作为连续的块移到RAM中,这可能不是必需的。另一个选项值得考虑,但取决于您需要在帖子正文中处理多少数据,而是将数据作为流处理。 例如,对于XM
问题内容: 当我使用Jackson对该对象进行反序列化时,我试图在Java对象中包含原始JSON。为了测试此功能,我编写了以下测试: 代码输出以下行: JSON正是我想要的外观。不幸的是,当尝试将JSON读回对象时,代码将失败并出现异常。这是例外: org.codehaus.jackson.map.JsonMappingException:无法从[源:java.io.StringReader@d7
下面的API接受来自客户端的json字符串,并将其映射到电子邮件对象中。如何将请求正文()作为原始字符串获取?(我需要原始字符串和键入版本的参数) PS:这个问题不是重复的:如何在SpringREST控制器中访问普通json主体?
问题内容: 考虑: 那么我们如何获得报价,而不是斜杠? 并且请不要建议,因为那样的话,问题就变成了我们如何包括两种引号? 问题答案: 如果要在字符串中使用双引号而不是单引号,则可以只使用单引号作为分隔符: 如果在字符串中需要两种引号,请使用三引号引起来的字符串: 如果要在字符串中同时包含两种用三引号引起来的字符串(一种极不可能的情况),则不能这样做,并且必须使用带有转义符的非原始字符串。
问题内容: 在Java中,原始类型和数组是否具有包含包? 可能不是,但是只是想确定一下。 问题答案: 简单答案 让我们测试一下: 输出: 空 null 不,他们不:-) 基本类型 原始类是没有包的特殊构造。供参考,请参阅的来源,别名为: 如您所见,原始类是通过package-private和native机制加载的: 并投射到(我想为了启用自动装箱) 包装器类型及其原始类型 顺便说一句:每个包装器类
问题内容: 我有三种模式: 我想获取包含A的所有B和C的json数据。我尝试了许多类似的操作: 但没有任何效果。什么是做到这一点的好方法。 问题答案: 请参阅以查看可以传递给的选项。报价: 要包括关联,请使用… 二级和更高级别的关联也可以工作: 不需要像自动那样直接调用或直接调用。