[英]php curl post request
我寫了這段代碼來發送帖子請求
$ch = curl_init("http://www.exemple.com");
curl_setopt($ch, CURLOPT_COOKIE, "PHPSESSID=32chars; prsess_******=32chars; login_******=55chars");
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("type" => "1"));
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded; charset=UTF-8"));
curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$page = curl_exec($ch);
print $head = curl_getinfo($ch, CURLINFO_HEADER_OUT);}
curl_close($ch);
但是我把它作為標題
POST / HTTP/1.1
User-Agent: Mozilla/5.0 ...
Host: www.exemple.com
Accept: */*
Referer: http://www.exemple.com/page.php
Cookie: PHPSESSID=32chars; prsess_******=32chars; login_******=55chars
Content-Length: 140
Expect: 100-continue
Content-type: application/x-www-form-urlencoded; charset=UTF-8; boundary=----------------------------0636ec3c1d17
有人可以告訴我為什么沒有列出type=1
嗎?
POST變量在請求的正文中發送,這不是標頭的一部分。
請求的正文僅在標頭之后發送,並以空白行分隔。
順便說一句,當您將CURLOPT_POSTFIELDS設置為數組時,curl將正文作為multipart / form-data發送,並且相應地將Content-Type設置為multipart / form-data。
您不應該自己設置Content-Type
標頭,因為它會破壞請求。
或將CURLOPT_POSTFIELDS設置為字符串(例如http_build_query(array('type' => 1));
),以避免curl將POST作為多部分/表單數據發送。
POST數據在請求正文中發送,而不在標頭中發送。
POST字段不包含在標題中,而是包含在正文中。
cURL在發送正文之前正在等待服務器以HTTP/1.1 100 Continue
消息響應,因為它已經發送了Expect: 100-continue
標頭。
您的問題中還缺少其他代碼嗎? 因為如果沒有,則Content-Length: 140
標頭是錯誤的(應該為6)...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.