如何在bash中执行HTTP PUT?

时间:2011-12-11 20:12:38

标签: bash put

我正在向第三方API发送请求。它说我必须发送HTTP PUT到http://example.com/project?id=projectId

我尝试用PHP curl做这个,但我没有从服务器得到响应。也许我的代码有问题,因为我之前从未使用过PUT。我有办法从bash命令行执行HTTP PUT吗?如果是,命令是什么?

3 个答案:

答案 0 :(得分:6)

如果你真的只想使用bash,它实际上有一些网络支持。

 echo -e "PUT /project?id=123 HTTP/1.1\r\nHost: website.com\r\n\r\n" > \
   /dev/tcp/website.com/80

但我想你还想在体内发送一些数据?

答案 1 :(得分:6)

使用curl就像是

curl --request PUT --header "Content-Length: 0" http://website.com/project?id=1

但是像Mattias说的那样你可能也想要身体中的一些数据,所以你也想要内容类型和数据(加上内容长度会更大)

答案 2 :(得分:0)

就像 Mattias 建议的那样,Bash 可以在没有其他工具的情况下完成这项工作。如果要发送数据,至少要预设“Content-length”。定义变量“host”、“port”、“resource”和“data”后,您可以使用

执行 HTTP put
echo -e "PUT /$resource HTTP/1.1\r\nHost: $host:$port\r\nContent-Length: ${#data}\r\n\r\n$data\r\n" > /dev/tcp/$host/$port

我使用 Rest API 对此进行了测试,效果很好。