我正在向第三方API发送请求。它说我必须发送HTTP PUT到http://example.com/project?id=projectId
我尝试用PHP curl做这个,但我没有从服务器得到响应。也许我的代码有问题,因为我之前从未使用过PUT。我有办法从bash命令行执行HTTP PUT吗?如果是,命令是什么?
答案 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 putecho -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 对此进行了测试,效果很好。