从bash脚本发送POST请求

26

我想在发出一次 POST 请求后执行一个 bash 脚本。目前我使用 Postman 发送请求,但我想知道是否可以用一个带有 json 文件参数的 bash 脚本来实现。

到目前为止我已经研究了 curl ,但它无法正常工作:

bash 文件

curl -X POST -d req.json http://localhost:9500

Json文件(req.json

{
    "id":5,
    "name":"Dan",
    "age":33,
    "cnp":33,
    "children":100,
    "isMarried":0
}

我只是收到了这个错误:

HTTP/1.0 503 Service Unavailable

带有尾随的HTML

1个回答

36

curl应该可以完成这个任务。这将使用req.json中的数据作为请求体发送一个普通的POST请求:

curl -X POST -H 'Content-Type: application/json' -d @req.json http://localhost:9500
curl -X POST -H 'Content-Type: application/json' -d '{"message": "hello"}' http://localhost:9500

你所缺少的元素是 -H "Content-Type: application/json" 和数据标志中的 @。如果没有像上面那样使用 -H 标志,curl 将发送一个内容类型为 application/x-www-form-urlencoded 的请求,大多数应用程序不会接受这种类型的请求,因为它们期望的是 JSON 数据。而在 -d 标志中使用 @ 告诉 curl 你正在传递一个文件名;否则它将使用文本本身(即 "req.json")作为数据。

5
如果您想将 JSON 放入命令中,请使用以下方式: curl -X POST -H "Content-Type: application/json" -d '{"message": "hello "}' http://localhost:9500 - Zaffer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接