从freshdesk api获取所有用户时,获取curl_error():2不是有效的cURL句柄资源

use*_*886 26 php curl ticket-system

我正在创建自己的系统来管理所有来自freshdesk.com通过其API的门票.我正在发送curl请求从freshdesk.com获取数据.获取与代码相关的数据它的工作正常,但当我通过curl请求请求所有用户时,它给我错误:

警告: curl_errno():2不是第28行C:\ wamp\www\test.php中的有效cURL句柄资源.

我的代码是这样的:

$ch = curl_init();  
$cOption = array(
    CURLOPT_URL            => 'http://velocity.freshdesk.com/contacts.xml',
    CURLOPT_HEADER         => 0,
    CURLOPT_USERPWD        => "$email:$password",
    CURLOPT_POST           => false,
    CURLOPT_HTTPHEADER     => array('Content-Type: application/xml'),
    CURLOPT_HTTPAUTH       => CURLAUTH_BASIC,
    CURLOPT_FAILONERROR    => 1,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSLVERSION     => 2
);  
@curl_setopt_array( $ch, $cOption );  
curl_close($ch);
echo curl_errno($ch);  //line 28
echo curl_error($ch);  //line 29
echo $ch_result;  
Run Code Online (Sandbox Code Playgroud)

输出为:
警告: curl_errno():2不是第28行C:\ wamp\www\test.php中的有效cURL句柄资源.
警告: curl_errno():2不是C:\中的有效cURL句柄资源第29行的wamp\www\test.php.1
// echo $ ch_result的输出

请帮我弄清楚代码有什么问题,以及为什么会出现这种警告.

Mic*_*bov 77

您可以使用curl_errnocurl_error关闭后$ch.这是不对的.

您需要关闭$ch有关错误的以后获取信息.

echo curl_errno($ch);
echo curl_error($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

你也没有设置任何东西$ch_result.如果您希望它包含您的请求结果,那么您错了.要解决此问题,您需要添加选项CURLOPT_RETURNTRANSFER并获取结果$ch_result = curl_exec($ch);


Won*_*Bae 13

echo curl_errno($ch);
echo curl_error($ch);
Run Code Online (Sandbox Code Playgroud)

必须先叫 curl_close($ch);


小智 5

关闭$ ch后,您可以使用curl_errno和curl_error。这是不对的。

您需要在获取有关错误的信息后关闭$ ch。

没错,我可以回答这个问题。

        $data = curl_exec($ch);
        if (!curl_errno($ch)) {
         ....
        }
        curl_close($ch);
Run Code Online (Sandbox Code Playgroud)