Voici un extrait des en-têtes HTTP Live, j'ai remplacé plusieurs valeurs pour l'anonymat.
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
Cette requête a à la fois des valeurs GET et POST. Le script à l'autre extrémité est PHP et attend que certaines valeurs soient dans le GET et d'autres soient dans la poste.
Je sais comment émettre un GET
curl -G -d "key=val" "http://yadayadayada"
Et je comprends comment faire un POST
curl -d "key=val" "http://yadayadayada"
curl -F "key=val" "http://yadayadayada"
Mais comment mélanger les deux en une seule demande? Chaque tentative que j'ai faite jusqu'à présent s'est soldée par une erreur.
Les variables GET peuvent être incluses dans l'URL. Vous incluez simplement les variables GET dans la chaîne de requête. Par exemple, si vous vouliez envoyer une demande GET avec "username = fred" à www.example.com/index.php, vous enverriez une simple demande GET à "http://www.example.com/index.php ? username = fred ". Donc, pour répondre à votre question, utilisez simplement la méthode POST, mais demandez à l'URL de contenir vos données GET.
Pour clarifier, GET et POST sont des méthodes de requête HTTP, pas des types de valeur.
Par conséquent, si vous souhaitez envoyer les deux types de valeurs, envoyez les données POST comme d'habitude tout en écrivant explicitement votre chaîne de requête.
curl -d "key=val" "http://example.com?query_var=1"