Curl - 使用带有查询参数的JSON的POST请求

时间:2017-09-09 21:05:23

标签: json http curl post

我有一个服务器的网址https://mylink/apply?data=,它接受​​数据变量作为以下属性的有效JSON: -

  • name:包含您姓名的字符串(必填)
  • 电子邮件:包含您的电子邮件地址的字符串(必填)
  • urls:包含链接的字符串数组
  • comment:包含您可能拥有的任何评论/请求的字符串(可选)

我的JSON文件" data.json"如下:

{
    "data":
    {
        "name": "Rogers Bell",
        "email": "xxxx@gmail.com",
        "urls":["https://stackoverflow.com/users/3067241/imran", "https://github.com/i4ali"],
        "comment":"none"
    }
}

当我使用以下CURL命令发送POST请求时,我收到错误代码 400 Bad Request ,其中包含来自服务器的消息错误:没有数据通过。指示我的JSON格式或命令有问题。不知道我在这里做错了什么

curl -v -i -X POST -d @data.json https://mylink/apply?data= -H "Accept: application/json" -H "Content-Type: application/json" -k

如果重要,我正在使用Windows 7

2 个答案:

答案 0 :(得分:3)

API非常奇怪。但是,如果您必须阅读JSON文件并将其内容作为URL参数发布到服务器,则可以cat该文件,对其进行编码并将其发送到curl。这是一个例子:

curl -G -X POST https://requestb.in/1n88lah1 --data-urlencode data="$(cat input.json)"

input.json看起来像:

{
    "name": "Rogers Bell",
    "email": "xxxx@gmail.com",
    "urls":["https://stackoverflow.com/users/3067241/imran", "https://github.com/i4ali"],
    "comment":"none"
}

答案 1 :(得分:-1)

使用Postman我能够使用以下完整URL发送此POST请求。得到 200 OK 回复

https://mylink/apply?data={
    "name": "Rogers Bell",
    "email": "xxxx@gmail.com",
    "urls":["https://stackoverflow.com/users/3067241/imran", "https://github.com/i4ali"],
    "comment":"none"
}