2010-11-04 19 views
20

Aquí hay un extracto de los encabezados HTTP en vivo, he reemplazado varios valores por el anonimato.¿Cómo puedo hacer una solicitud con los parámetros GET y POST?

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 

Esta solicitud tiene valores GET y POST. El script en el otro extremo de esto es PHP y espera que ciertos valores estén en el GET y que otros estén en el POST.

sé cómo emitir un GET

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

y entiendo cómo hacer un POST

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

Pero ¿Cómo mezclo los dos en una sola solicitud? Cada intento que he hecho hasta ahora ha terminado en un error.

Respuesta

30

Las variables GET se pueden incluir en la URL. Simplemente incluya las variables GET en la cadena de consulta. Por ejemplo, si quisiera enviar una solicitud GET con "username = fred" a www.example.com/index.php, enviaría una simple solicitud GET a "http://www.example.com/index.php ? username = fred ". Entonces, para responder a su pregunta, simplemente use el método POST, pero haga que la URL contenga sus datos GET.

+2

¿qué pasa si tu param tiene espacios como username = 'fred johnson'? – latvian

+5

@latvian Debes escapar del espacio para hacer que la url sea completamente segura. En su caso, sería http://www.example.com/index.php?username=fred%20johnson. Lea sobre la codificación de url aquí: http://www.blooberry.com/indexdot/html/topics/urlencoding.htm – Samuel

9

Para aclarar, GET y POST son métodos de solicitud HTTP, no tipos de valores.

  • Las variables GET se llaman parámetros query string. Son parte de la URL y se pueden incluir en cualquier solicitud.
  • Las variables POST son los contenidos de un cuerpo de mensaje urlencoded. Estos también pueden enviarse con una solicitud PUT.

Por lo tanto, si desea enviar ambos tipos de valores, envíe los datos POST como normal mientras escribe explícitamente su cadena de consulta.

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