PHP cURL Content-Length和Content-Type错误

我试图通过 PHP cURL登录到一个网站,我只收到“错误请求”的响应.

我使用hosts文件播放,并将其设置到我的服务器,以检查我的浏览器发送的请求标头,并将其与cURL发送的请求标头进行比较.

一切都是平等的,除了:

浏览器:

Content-Type: application/x-www-form-urlencoded
Content-Length: 51

PHP cURL:

Content-Length: 51,359
Content-Type: application/x-www-form-urlencoded; boundary=----------------------------5a377b7e6ba7

我已经用这个命令设置了这个值,但它仍然发送错误的头文件

curl_setopt($this->hCurl,CURLOPT_HTTPHEADER,array(
    'Expect:','Content-Type: application/x-www-form-urlencoded','Content-Length: 51' 
));
你不必自己设置内容长度.如果您使用cURL发送HTTP POST,则会为您计算内容长度.

如果将CURLOPT_POSTFIELDS值设置为数组,它将自动将请求作为multipart / form-data提交,并使用边界.如果你传递一个字符串,它将使用application / x-www-form-urlencoded,所以确保将一个urlencoded字符串传递给CURLOPT_POSTFIELDS,而不是一个数组,因为你想要形式urlencoded.

你需要这样做:

$data = 'name=' . urlencode($value) . '&name2=' . urlencode($value2);
curl_setopt($this->hCurl,CURLOPT_POSTFIELDS,$data);

// NOT

$dataArray = array('name' => 'value','name2' => 'value2');
curl_setopt($this->hCurl,$dataArray);

在这两种情况下,您不需要设置内容长度,但您必须使用第一种方法获取表单上的application / x-www-form-urlencoded encoding.

如果没有帮助,请发布与设置卷曲请求相关的所有代码(所有选项和您传递给它的数据),这有助于解决问题.

编辑:

添加的是我想出的一个例子(我登录失败).

<?PHP

$URL_HOME  = 'http://ilocalis.com/';
$LOGIN_URL = 'https://ilocalis.com/login.PHP';

$ch = curl_init($URL_HOME);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

$home = curl_exec($ch);

//echo $home;

$post = array('username' => 'drew','password' => 'testing 123');
$query = http_build_query($post);

curl_setopt($ch,CURLOPT_URL,$LOGIN_URL);
curl_setopt($ch,CURLOPT_POST,$query);

$login = curl_exec($ch);

echo $login;

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...