Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
curl php响应204下载zip文件_Php_Curl_Remote Server - Fatal编程技术网

curl php响应204下载zip文件

curl php响应204下载zip文件,php,curl,remote-server,Php,Curl,Remote Server,我需要下载一个文件到远程服务器。但是我不能在php中使用curl。 代码是: $ch = curl_init($source); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_BUFFERSIZE, 8096); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($

我需要下载一个文件到远程服务器。但是我不能在php中使用curl。 代码是:

$ch = curl_init($source);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_BUFFERSIZE, 8096);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        var_dump(curl_exec($ch));

        print_r(curl_getinfo($ch));
        die;
结果是:

string(0) ""
Array
(
    [url] => http://example.com/example.zip
    [content_type] => 
    [http_code] => 204
    [header_size] => 213
    [request_size] => 118
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 1.180951
    [namelookup_time] => 0.012276
    [connect_time] => 0.105478
    [pretransfer_time] => 0.105523
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 1.18091
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => 104.79.246.86
    [certinfo] => Array
        (
        )

    [primary_port] => 80
    [local_ip] => 192.168.0.14
    [local_port] => 46676
)

文件在浏览器中正常下载。怎么了?对不起,我的英语不好,谢谢你的帮助

我已经尝试了你的基本示例,它正在工作(收到了代码200和标准zip公共文件)

我认为服务器可能正在过滤可疑的请求。尝试通过设置标题来模拟浏览器:

例如:

$url="https://new.aol.com/productsweb/subflows/ScreenNameFlow/AjaxSNAction.do?s=username&f=firstname&l=lastname";
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
var_dump($result);

来源:

204状态表示服务器选择不返回任何内容,只返回更新的元数据。这可能是因为它正在检查您使用的浏览器类型,并且没有设置为响应curl

查看如何使脚本看起来像浏览器


顺便说一句,您只需要设置一次CURLOPT_RETURNTRANSFER。将其设置为true或1将得到相同的结果。

假装是浏览器,然后:更改curl的用户代理,使其看起来像“真实”的浏览器。现场可能有防刮保护装置