Я хочу отправить форму со следующей информацией:
<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://...