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

Imr*_*ran 2 post json curl http

我有一个 URL https://mylink/apply?data=用于接受数据变量作为以下属性的有效 JSON 的服务器:-

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

我的 JSON 文件“data.json”如下:

{
    "data":
    {
        "name": "Rogers Bell",
        "email": "xxxx@gmail.com",
        "urls":["/sf/users/214706901/", "https://github.com/i4ali"],
        "comment":"none"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下 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
Run Code Online (Sandbox Code Playgroud)

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

sha*_*ncs 5

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

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

input.json会是什么样子:

{
    "name": "Rogers Bell",
    "email": "xxxx@gmail.com",
    "urls":["/sf/users/214706901/", "https://github.com/i4ali"],
    "comment":"none"
}
Run Code Online (Sandbox Code Playgroud)