使用 Curl 的 HTTP POST 请求:为什么没有任何作用?

使用 Curl 的 HTTP POST 请求:为什么没有任何作用?

我想要提交一份包含以下信息的表格:

<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-dataPOST

改用:

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://...

相关内容