2012-07-16 1 views
8

essentiellement, cette erreur ne se produit que dans CURLErreur PHP CURL - boucle: (56) non Recv: Connexion réinitialisée par les pairs

curl: (56) Recv failure: Connection reset by peer 

Mais quand je visite directement le lien directement sur mon navigateur, cela fonctionne!

Quelles sont vos recommandations sur la réparation de celui-ci ou la cause de cette erreur?

Remarque: le serveur est codé en ASP et il ne se produit que sur un appel API

+1

Y at-il un cookie à envoyer? – Pete

+0

ouais sur la console, c'est aussi l'erreur, il n'y a pas d'en-tête/options sur la requête curl. et il n'y a aucun cookie implique .. –

+0

Je devine que c'est une erreur de serveur, mais je ne sais pas quelle partie ou section du serveur cela se produit –

Répondre

3

Je me souviens faire face à ce problème de retour depuis longtemps. Bien que je ne me souviens pas triée exactement la question, mais je me souviens d'essayer ce qui suit:

1) je tente de transmettre les paramètres de la requête dans l'URL directement et moi avons essayé en passant par la méthode POST

2) J'ai essayé d'utiliser un proxy avec boucle pour voir si je peut être bloqué par l'autre, je crois que j'ai aussi demandé à mon serveur hôte

3) pour examiner et ils ont fait quelques réglages Apache change

+1

Vous souvenez-vous quel était le résultat? –

+0

Je pense que l'hôte a modifié certains paramètres d'Apache, mais pas les paramètres. Immédiatement après avoir modifié les paramètres, il a commencé à fonctionner. De plus, il y a peut-être eu un problème avec la façon dont j'envoyais les paramètres dans ma requête curl. – Sam

+0

J'ai aussi ici que les mesures de litespeed anti ddos ​​pourraient placer une interdiction temporaire sur l'IP appelant. Je crois que c'est ce qui m'est arrivé. Nous sommes toujours en discussion. –

3

Je résolus de cette problème en supprimant caractères d'espaces à partir de l'URL. Dans ma situation, c'était le serveur proxy qui faisait erreur, pas le serveur Web.

En PHP:

 curl_setopt($ch, CURLOPT_URL, trim($url)); 
+0

Si les caractères des espaces sont une partie valide de l'URL, vous pouvez utiliser la fonction rawurlencode() à la place, pour remplacer les espaces par des caractères% 20 – fjaeger

0

J'ai eu le même problème avec ce code:

 $url = "http://xxx.xxx.xxx.xxx"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_PORT, 44455); //Set the port to connect to 
     //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 44455); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     echo $xml = curl_exec($ch); 
     if(curl_errno($ch)) 
     { 
      echo 'error:' . curl_error($ch); 
     } 
     curl_close($ch); 

Got it résolu en désactivant ceci:

 //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 44455); 
Questions connexes