web-dev-qa-db-ja.com

GETパラメーターとPOSTパラメーターの両方でリクエストを行うにはどうすればよいですか?

以下はライブ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にあり、他の値がポストで。

GETの発行方法を知っている

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

そして、私はPOSTを行う方法を理解しています

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

しかし、1つの要求に2つを混在させるにはどうすればよいですか?これまでに行ったすべての試みはエラーで終了しました。

20
Fred

GET変数をURLに含めることができます。クエリ文字列にGET変数を含めるだけです。たとえば、「username = fred」を指定したGETリクエストをwww.example.com/index.phpに送信する場合、単純なGETリクエストを「http://www.example.com/index.php」に送信します。 ?username = fred」。したがって、質問に答えるには、POSTメソッドを使用しますが、GETデータをURLに含めます。

30
Samuel

明確にするために、GETおよびPOSTはHTTP要求メソッドであり、値のタイプではありません。

  • GET変数は クエリ文字列 パラメーターと呼ばれます。これらはURLの一部であり、任意のリクエストに含めることができます。
  • POST変数は、urlencodedメッセージ本文の内容です。これらは、PUT要求で送信される場合もあります。

したがって、両方のタイプの値を送信する場合は、クエリ文字列を明示的に記述しながら、通常どおりPOSTデータを送信します。

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