以下是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"
但是如何在一个请求中混合使用这两个?到目前为止,我所做的每一次尝试都以错误结束。
答案 0 :(得分:30)
GET变量可以包含在URL中。您只需在查询字符串中包含GET变量即可。例如,如果您想将带有“username = fred”的GET请求发送到www.example.com/index.php,您可以向“http://www.example.com/index.php”发送简单的GET请求?用户名=弗雷德”。所以要回答你的问题,只需使用POST方法,但让URL包含你的GET数据。
答案 1 :(得分:10)
为了澄清,GET和POST是HTTP请求方法,而不是值类型。
因此,如果要发送两种类型的值,请在显式编写查询字符串时正常发送POST数据。
curl -d "key=val" "http://example.com?query_var=1"