Назад | Перейти на главную страницу

HTTP-запрос POST с использованием Curl: почему ничего не работает?

Я хочу отправить форму со следующей информацией:

<form enctype="mutlipart/form-data" method="post" action="/command">
  <input tyep="submit" value=" Generate Snapshot " name="GENERATE_SNAPSHOT" ></input>
</form>

Я пытаюсь сделать такой запрос, используя веб-страницу (хром), на вкладке «сеть» я замечаю, что:

`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 просьба, но 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"

Это -F не -f.
Также в Chrome вы можете щелкнуть правой кнопкой мыши запрос во вкладке сети и «Копировать как cURL».
Это добавит точный запрос Chrome в ваш буфер обмена, готовый к выполнению через cURL.

Чтобы выполнить POST, вам необходимо установить метод запроса.

curl -X POST -f ... http://...