簡體   English   中英

php curl發布請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM