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

2022-08-30 13:45:13

我正在创建自己的系统来管理来自 freshdesk.com 通过其API的所有票证。我正在向 freshdesk.com 发送 curl 请求以获取数据。通过获取与股票代码相关的数据,它工作正常,但是当我通过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;  

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

请帮助我找出代码的问题以及为什么会出现此警告。


答案 1

您使用 和 关闭后。这是不对的。curl_errnocurl_error$ch

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

echo curl_errno($ch);
echo curl_error($ch);
curl_close($ch);

此外,您没有将任何内容设置为 .如果您期望它包含您的请求的结果,那么您就错了。要解决此问题,您需要添加选项并获取结果$ch_resultCURLOPT_RETURNTRANSFER$ch_result = curl_exec($ch);


答案 2
echo curl_errno($ch);
echo curl_error($ch);

必须在之前调用curl_close($ch);


推荐