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