使用PHP请求库捕获curl错误

时间:2014-07-08 04:57:25

标签: php curl

我正在使用https://github.com/rmccue/Requests

我使用随机代理发出请求有时代理会工作,有时它会失败:有不同的错误: Uncaught exception 'Requests_Exception' with message 'cURL error 28: connect() timed out!'  我的问题是:如何捕获此CURL错误,并在循环中尝试另一个代理?

我试过var_dump($request->status_code);无论成功还是失败都输出200。

include('../library/Requests.php');

// Next, make sure Requests can load internal classes
Requests::register_autoloader();

// Now let's make a request via a proxy.
$options = array(
    'proxy' => '$randomProxyIP:$randomProxyPort')
);
$request = Requests::get('http://httpbin.org/ip', array(), $options );


var_dump($request->status_code); 

2 个答案:

答案 0 :(得分:2)

documentation中,您可以找到很多例外情况。此外,您的消息意味着您要捕获异常Requests_Exception。所有这些都是来自Requests_Exceptionhere)的子条款,所以在基本方面你应该:

try {
    $request = Requests::get('http://httpbin.org/ip', array(), $options );
} catch (Requests_Exception $e) {
    //something goes wrong
}

答案 1 :(得分:1)

try {
    $request = Requests::get('http://httpbin.org/ip', array(), $options );
} catch (Exception $e) {
    var_dump($e->getMessage());
}