当前位置: 首页 > 面试题库 >

如何通过JSON文件传递有效载荷以进行curl?

百里光熙
2023-03-14
问题内容

我可以通过curl执行以下命令成功创建一个地方:

$ curl -vX POST https://server/api/v1/places.json -d "
  auth_token=B8dsbz4HExMskqUa6Qhn& \
  place[name]=Fuelstation Central& \
  place[city]=Grossbeeren& \
  place[address]=Buschweg 1& \
  place[latitude]=52.3601& \
  place[longitude]=13.3332& \
  place[washing]=true& \
  place[founded_at_year]=2000& \
  place[products][]=diesel& \
  place[products][]=benzin \
"

服务器返回HTTP/1.1 201 Created
现在,我想将有效负载存储在一个如下所示的JSON文件中:

// testplace.json
{
  "auth_token" : "B8dsbz4HExMskqUa6Qhn",
  "name" : "Fuelstation Central",
  "city" : "Grossbeeren",
  "address" : "Buschweg 1",
  "latitude" : 52.3601,
  "longitude" : 13.3332,
  "washing" : true,
  "founded_at_year" : 2000,
  "products" : ["diesel","benzin"]
}

所以我修改了要执行的命令,如下所示:

$ curl -vX POST http://server/api/v1/places.json -d @testplace.json

返回失败HTTP/1.1 401 Unauthorized。为什么?


问题答案:

curl发送默认内容类型为的POST请求application/x-www-form- urlencoded。如果要发送JSON请求,则必须指定正确的内容类型标头:

$ curl -vX POST http://server/api/v1/places.json -d @testplace.json \
--header "Content-Type: application/json"

但这仅在服务器接受json输入的情况下有效。将.json在URL的末尾可能仅表明 输出 是JSON,这并不一定意味着它也将处理JSON 输入
。API文档应提示您是否这样做。

究其原因,你得到了401,而不是其他一些错误可能是因为服务器不能提取auth_token从您的要求。



 类似资料:
  • 我是AWS平台的新手。我已经通过AWS CLI调用了lambda函数。 在这里,Payload是一个json文件 这个json文件被用作我的lambda处理程序中事件对象的一部分。 当上传S3文件并自动触发Lambda函数时,是否可以配置此行为? 例如, 我在一个S3_bucket中上传了一个文件,该文件将触发一个lambda函数,其json负载如上所示。

  • 问题内容: 我正在使用 Citrus Framevork, 并有一些预测试步骤来获取身份验证令牌,然后在整个测试计划中使用它。而且,在这种情况下,您并不清楚如何使用 TestContext 以及如何访问var。通过几个testIT类: GetTokenIT.java: 该部分仅在GetTokenIT.class中可以正常工作。如何在nex测试步骤中传递/调用可变 令牌 ? GetClientIdI

  • 问题内容: 我正在尝试捕获audiorecorder(https://github.com/cwilso/AudioRecorder)并通过Ajax向Blob发送一个php文件,该文件将接收Blob内容并创建文件(在这种情况下为wave文件)。 Ajax呼叫: 和我的php文件(vocal_render.php): PS:我是blob和ajax的新手。提前致谢。 问题答案: 尝试将文件上传为表单数

  • 问题内容: 我正在使用 PHP , ExtJS 和 ajax存储 。 它不通过POST或GET发送数据(在创建,更新,销毁时)。在 Chrome控制台中, 我在“ 请求有效负载 ”字段中看到我的传出参数为JSON 。 $ _POST 和 $ _GET 为空。 如何在PHP中检索它? 问题答案: 如果我正确理解这种情况,那么您只是通过http正文传递了json数据,而不是数据。 您可以使用以下代码段

  • 问题内容: 我一直在为它构建一个Rest API,并且一直在使用命令行中的curl对它进行测试,这对于CRUD非常容易 我可以从命令行成功进行这些调用 上面的调用很容易从命令行进行,并且可以在我的api上正常使用,但是现在我想使用PHP创建curl。如您所见,我将数据作为json字符串传递。我已经阅读了很多,我想我可能可以进行POST并包含POST字段,但是我无法找出如何通过GET传递http正文