繁体   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