Как я могу сделать запрос с параметрами GET и POST?
Здесь выдержка из заголовков 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. script на другом конце этого является PHP и ожидает, что определенные значения будут в GET, а другие - в POST.
Я знаю, как выпустить GET
curl -G -d "key=val" "http://yadayadayada"
И я понимаю, как делать POST
curl -d "key=val" "http://yadayadayada"
curl -F "key=val" "http://yadayadayada"
Но как мне смешивать два в одном запросе? Каждая попытка, которую я сделал до сих пор, закончилась ошибкой.
Ответы
Ответ 1
В URL могут быть включены переменные GET. Вы просто включаете переменные GET в строку запроса. Например, если вы хотите отправить запрос GET с именем "username = fred" на www.example.com/index.php, вы отправите простой запрос GET на "http://www.example.com/index.php? = имя пользователя Фрэд". Поэтому, чтобы ответить на ваш вопрос, просто используйте метод POST, но укажите URL-адрес ваших данных GET.
Ответ 2
Чтобы уточнить, GET и POST являются методами HTTP-запросов, а не типами значений.
- Переменные GET называются параметры строки запроса. Они являются частью URL-адреса и могут быть включены в любой запрос.
- POST-переменные - это содержимое тела сообщения с urlencoded. Они также могут быть отправлены с запросом PUT.
Поэтому, если вы хотите отправить оба типа значений, отправьте данные POST как обычно, явно указывая строку запроса.
curl -d "key=val" "http://example.com?query_var=1"