Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当我更改标题时,卷曲冻结_Php_Ajax_Post_Curl_Libcurl - Fatal编程技术网

Php 当我更改标题时,卷曲冻结

Php 当我更改标题时,卷曲冻结,php,ajax,post,curl,libcurl,Php,Ajax,Post,Curl,Libcurl,我制作了一个PHP脚本在网站上发送HTTP请求。当我不设置标题时,一切都“正常”。但结果是错误的。但当我更改标题时,程序冻结。这是我的密码: $cookie_file_path='cookie'; $curl_connection = curl_init('http://www.website.com/path/to/script'); curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($curl

我制作了一个PHP脚本在网站上发送HTTP请求。当我不设置标题时,一切都“正常”。但结果是错误的。但当我更改标题时,程序冻结。这是我的密码:

$cookie_file_path='cookie';

$curl_connection =  curl_init('http://www.website.com/path/to/script');

curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);

curl_setopt($curl_connection, CURLOPT_USERAGENT,"Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1");

curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($curl_connection, CURLOPT_COOKIEJAR, $cookie_file_path);

curl_setopt($curl_connection, CURLOPT_COOKIEFILE, $cookie_file_path);

curl_setopt($curl_connection,CURLOPT_HTTPHEADER, array('Accept: application/json, text/javascript, */*; q=0.01','Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3','Accept-Encoding: gzip, deflate','Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7','Content-Type: application/json; charset=utf-8','X-Requested-With: XMLHttpRequest','Content-Length: 179','Pragma: no-cache','Cache-Control: no-cache'));

//I use the same header as the website

$post_data=array();

$post_data['address'] = 'my_address';

$post_data['lastname'] = 'my_lastname';

 (...)

foreach ( $post_data as $key => $value)
    $post_items[] = $key . '=' . $value;


$post_string = implode ('&', $post_items);

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

$result = curl_exec($curl_connection);

file_put_contents('result.html',$result);
主web页面用AJAX向脚本发送POST请求,我正试图用PHP做同样的事情。当我注释掉这一行时,脚本不会冻结:

curl_setopt($curl_connection,CURLOPT_HTTPHEADER, array('Accept: application/json, text/javascript, */*; q=0.01','Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3','Accept-Encoding: gzip, deflate','Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7','Content-Type: application/json; charset=utf-8','X-Requested-With: XMLHttpRequest','Content-Length: 179','Pragma: no-cache','Cache-Control: no-cache'));
可能的原因是什么。我错过什么了吗


谢谢

一个可能的原因是您正在发送静态字符串

Content-Length: 179

…作为标题。如果您的内容实际上没有那么长,web服务器可能会等待您在答复您的请求之前永远不会发送的数据。

一个可能的原因是您发送的是静态字符串

Content-Length: 179

…作为标题。如果您的内容实际上没有那么长,web服务器可能正在等待您在答复您的请求之前永远不会发送的数据。

谢谢您的答复。那么,动态设置该字符串的最佳方法是什么?当我删除它时,我收到一个错误:“处理请求时出错。”,“StackTrace”:““ExceptionType”:“}”我修复了此帖子的问题:。数组必须用Json编码:curl\u setopt($curl\u connection,CURLOPT\u POSTFIELDS,Json\u encode($post\u data));感谢您的回复。那么动态设置此字符串的最佳方法是什么?当我删除它时,我收到一个错误:“处理请求时出错。”,“StackTrace”:“,“ExceptionType”:“}”我修复了此帖子的问题:。数组必须用Json编码:curl_setopt($curl_connection,CURLOPT_POSTFIELDS,Json_encode($post_data));