Как я могу сделать запрос с параметрами GET и POST? - PullRequest
20 голосов
/ 05 ноября 2010

Вот выдержка из заголовков Live HTTP, я заменил несколько значений для анонимности.

POST blah/admin.php?module_id=1&action=update&id=129&pageNum=17&&eid=362 HTTP/1.1

Host: blah

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Firefox/3.6.12

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Referer: blah

Cookie: blah

Content-Type: multipart/form-data; boundary=---------------------------21278813472729408841849703914

Content-Length: 5110

-----------------------------21278813472729408841849703914

Content-Disposition: form-data; name="MAX_FILE_SIZE"



300000000

Этот запрос имеет значения GET и POST. Сценарий на другом конце этого - PHP и ожидает, что определенные значения будут в GET, а другие - в POST.

Я знаю, как выдать GET

curl -G -d "key=val" "http://yadayadayada"

И я понимаю, как сделать POST

curl -d "key=val" "http://yadayadayada"
curl -F "key=val" "http://yadayadayada"

Но как мне смешать два в одном запросе? Все мои попытки заканчивались ошибкой.

Ответы [ 2 ]

30 голосов
/ 05 ноября 2010

GET переменные могут быть включены в URL. Вы просто включаете переменные GET в строку запроса. Например, если вы хотите отправить GET-запрос с «username = fred» на www.example.com/index.php, вы бы отправили простой GET-запрос на «http://www.example.com/index.php?username=fred".». Чтобы ответить на ваш вопрос, просто используйте POST метод, но URL должен содержать ваши данные GET.

10 голосов
/ 15 июня 2013

Для пояснения, GET и POST являются методами HTTP-запросов, а не типами значений.

  • Переменные GET называются строка запроса параметры. Они являются частью URL и могут быть включены в любой запрос.
  • Переменные POST - это содержимое тела сообщения с кодировкой urlenco. Они также могут быть отправлены с запросом PUT.

Поэтому, если вы хотите отправить оба типа значений, отправьте данные POST как обычно, в то время как явно пишете строку запроса.

curl -d "key=val" "http://example.com?query_var=1"
...