![使用 Curl 的 HTTP POST 请求:为什么没有任何作用?](https://linux22.com/image/655024/%E4%BD%BF%E7%94%A8%20Curl%20%E7%9A%84%20HTTP%20POST%20%E8%AF%B7%E6%B1%82%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E6%B2%A1%E6%9C%89%E4%BB%BB%E4%BD%95%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我想要提交一份包含以下信息的表格:
<form enctype="mutlipart/form-data" method="post" action="/command">
<input tyep="submit" value=" Generate Snapshot " name="GENERATE_SNAPSHOT" ></input>
</form>
我尝试使用网页(chrome)发出这样的请求,在“网络”选项卡下,我观察到:
`request URL:http://170.10.10.20:8888/command`
Request Mehthod:POST
Status Code:200 OK
Request Payload:
-------WebKitFormBoundaryLhRbxtNE7XU71JAD
Content-Disposition: form-data; name="GENERATE_SNAPSHOT"
Generate Snapshot
-------WebKitFormBoundaryLhRbXtNE7Xu71JAD----
我的 Curl 命令如下所示:
curl -f "GENERATE_SNAPSHOT=%20Generate%20Snapshot%20" http://170.10.10.20:8888/command
但是返回值看起来不准确,因为它返回的内容如下:
<html><head><head><META HTTP -QUIIV="EXPIRES" CONTENT="TEXT/HTML;
.....(and so on)
这为什么不起作用?
答案1
因为您发送的不是POST
请求,而是GET
请求,而本应是POST
请求主体的内容被 curl 忽略了。此外,选项-f
用于在服务器发生错误时默默失败,您需要查找在请求中-F
强制使用 的选项。Content-type: multipart/form-data
POST
改用:
curl -XPOST \
-F 'GENERATE_SNAPSHOT= Generate Snapshot ' \
"http://170.10.10.20:8888/command"
答案2
不是。在 Chrome 中-F
, 您也可以右键单击网络选项卡中的请求并选择“复制为 cURL”。 这会将 Chrome 发出的确切请求添加到剪贴板,以便通过 cURL 执行。-f
答案3
要执行 POST,您需要设置请求方法。
curl -X POST -f ... http://...