Http

使用 Curl 的 HTTP POST 請求:為什麼沒有任何效果?

  • March 28, 2015

我想送出一份包含以下資訊的表格:

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

為什麼這不起作用?

因為您發送的不是POST請求,而是請求,所以curl 忽略了GET您的請求正文。POST此外,選項-f用於在伺服器錯誤時靜默失敗,您正在尋找在您的請求-F中強制使用的選項。Content-type: multipart/form-data``POST

改用:

curl -XPOST \
   -F 'GENERATE_SNAPSHOT= Generate Snapshot ' \
   "http://170.10.10.20:8888/command"

-F不是-f。_

同樣在 Chrome 中,您可以右鍵點擊網路選項卡中的請求和“複製為 cURL”。

這會將 Chrome 所做的確切請求添加到剪貼板,準備好通過 cURL 執行。

引用自:https://serverfault.com/questions/678927