Получение curl_error(): 2 не является допустимым ресурсом дескриптора cURL при извлечении всех пользователей из freshdesk api
Я создаю свою собственную систему для управления всеми билетами, которые поступают из freshdesk.com через его API. Я делаю запрос curl для получения данных с freshdesk.com. С получением данных, связанных с тикерами, его работы прекрасны, но когда я запрашиваю для всех пользователей через запрос curl, то это дает мне ошибку:
Предупреждение: curl_errno(): 2 не является допустимым ресурсом дескриптора cURL в C:\wamp\www\test.php в строке 28.
Мой код выглядит так:
$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 не является допустимым ресурсом дескриптора cURL в C:\wamp\www\test.php в строке 28.
Предупреждение: curl_errno(): 2 не является допустимым ресурсом дескриптора cURL в C:\wamp\www\test.php в строке 29.
1//вывод echo $ch_result
Пожалуйста, помогите мне разобраться, что не так с кодом и почему это предупреждение происходит.
Ответы
Ответ 1
Вы используете curl_errno
и curl_error
после закрытия $ch
. Это неправильно.
Вам нужно закрыть $ch
после получения информации об ошибке.
echo curl_errno($ch);
echo curl_error($ch);
curl_close($ch);
Также вы ничего не задали для $ch_result
. Если вы ожидаете, что он содержит результат вашего запроса, вы ошибаетесь. Чтобы исправить это, вам нужно добавить опцию CURLOPT_RETURNTRANSFER
и получить результат с помощью $ch_result = curl_exec($ch);
Ответ 2
echo curl_errno($ch);
echo curl_error($ch);
необходимо вызвать до curl_close($ch);
Ответ 3
Вы используете curl_errno и curl_error после закрытия $ch. Это неправильно.
Вам нужно закрыть $ch после получения информации об ошибке.
thats true, я получаю ответ на этот вопрос.
$data = curl_exec($ch);
if (!curl_errno($ch)) {
....
}
curl_close($ch);