curl返回200,找不到页面

时间:2016-05-11 02:30:26

标签: php curl error-handling

$ch = curl_init();    
$varpost = '&res=1';  // Initiate cURL
$url = 'http://www.testxcvt.com/';// is 404 page
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $varpost);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec ($ch); // Execute
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if(curl_errno($ch))
    {
        echo 'error:' . curl_error($ch);
    }
curl_close ($ch); // Close cURL handle 

PFA我拥有的代码。当我显示$ code时,我得到200。在我的浏览器中,我得到了404页的广告。我不确定404页面获得200的共鸣是什么。

请帮忙

2 个答案:

答案 0 :(得分:0)

你在哪里执行代码?

当我在本地尝试时,我得到:

error:Could not resolve host: www.testxcvt.com

$code0的形式返回。

如果您尝试使用其他网址,例如http://www.text.com - 是否有效?

答案 1 :(得分:0)

如果您尝试下面的代码,您会看到curl发布到谷歌和谷歌响应405错误所以404检查是错误的。然后检查页面输出中的403并进行处理。

在您的情况下,页面不会返回405 http代码而是200,因此您应检查页面输出并设置正确的错误消息以查找。
唯一的问题是,如果该错误消息出现在您实际需要的页面上某处,则你也不会得到它们。

<?php
$ch = curl_init();    
$varpost = '&res=1';  // Initiate cURL
$url = 'http://www.google.com/';// is 404 page
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $varpost);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec ($ch); // Execute
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 404){
    /* handle real 404 here. */
    echo 'real 404 found';
}else{
    // here you can set your own error, for example 'Page Not Found (12)'
    if (strpos($output, '405') !== false) {
        // 404 page found
        echo 'Google custom error 405 found';
        print_r($output);
    }else{
        // no 404 error
        echo 'Google custom error not found';
        print_r($output);
    }
}
curl_close ($ch); // Close cURL handle 
?>