Je crée mon propre système pour gérer tous les billets qui proviennent de freshdesk.com via son API. Je fais une demande curl pour récupérer les données de freshdesk.com. Avec obtenir des données liées aux tickers, cela fonctionne bien, mais lorsque je demande à tous les utilisateurs via une demande de boucle, cela me donne une erreur:
Avertissement: curl_errno (): 2 n'est pas une ressource de cURL valide dans C:\wamp\www\test.php sur la ligne 28.
Mon code est comme ça:
$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;
La sortie est:
Attention: curl_errno (): 2 n'est pas une ressource de cURL valide dans C:\wamp\www\test.php sur la ligne 28.
Attention: curl_errno (): 2 n'est pas une ressource de cURL valide dans C:\wamp\www\test.php sur la ligne 29.
1 // sortie d'écho $ ch_result
Veuillez m'aider à comprendre ce qui ne va pas avec le code et pourquoi ces avertissements se produisent.
Vous utilisez curl_errno
Et curl_error
Après avoir fermé $ch
. Ce n'est pas correct.
Vous devez fermer votre $ch
Après avoir récupéré des informations sur l'erreur.
echo curl_errno($ch);
echo curl_error($ch);
curl_close($ch);
De plus, vous n'avez rien défini sur $ch_result
. Si vous vous attendez à ce qu'il contienne le résultat de votre demande, vous vous trompez. Pour résoudre ce problème, vous devez ajouter l'option CURLOPT_RETURNTRANSFER
Et récupérer le résultat avec $ch_result = curl_exec($ch);
echo curl_errno($ch);
echo curl_error($ch);
doit être appelé avant curl_close($ch);
Vous utilisez curl_errno et curl_error après avoir fermé $ ch. Ce n'est pas correct.
Vous devez fermer votre $ ch après avoir récupéré des informations sur l'erreur.
c'est vrai, je reçois une réponse à cette question.
$data = curl_exec($ch);
if (!curl_errno($ch)) {
....
}
curl_close($ch);