HTTP request failed! HTTP/1.1 505 Version HTTP Non pris en charge d'erreur
Je suis en train d'utiliser file_get_contents()
pour obtenir la réponse d'un serveur et cette erreur a été rencontrée. Quelqu'un pourrait-il me dire quelle est la raison et comment le résoudre? La partie du code est:
$api = "http://smpp5.routesms.com:8080/bulksms/sendsms?username=$username&password=$password&source=$source&destination=$destin&dlr=$dlr&type=$type&message=$message";
$resp = file_get_contents($api);
Le serveur a répondu correctement alors que j'ai collé l'url dans le navigateur.
J'ai appris que cela est causé par le serveur de rejet de la client HTTP de version, mais je n'ai aucune idée de pourquoi cela se passe dans mon cas.
Toute aide est très appréciée. Merci d'avance
Je reçois le même message d'erreur lors de l'utilisation "curl".
Essayez de remplacer votre ' $ " par "%24'. Ce n'est probablement pas ce qui est à l'origine de votre problème, mais vous devez correctement urlencode vos personnages.
le
Pouvez-vous poster le code qui fonctionne correctement?
De vérifier ma propre réponse.
Essayez de remplacer votre ' $ " par "%24'. Ce n'est probablement pas ce qui est à l'origine de votre problème, mais vous devez correctement urlencode vos personnages.
le
$
est fait pour la variable. Et j'ai trouvé ce qui a causé l'erreur, et c'est l'encodage. Je n'ai pas le remarquer plus tôt aps, le script a été de travailler plus tôt, et j'avais raté la fonction après un peu de montage. Merci à tous les gens qui ont essayé de l'aider...et en effet vos réponses où l'information.Pouvez-vous poster le code qui fonctionne correctement?
De vérifier ma propre réponse.
OriginalL'auteur shyam | 2010-05-03
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé le problème, et c'était une simple erreur de codage -- manque d'encodage d'url.
La raison pour laquelle je n'avais pas remarqué qu'il était d'abord parce que le code est ok avant je faisais du montage, et j'avais raté le
urlencode()
fonction avant d'appeler le serveur, ce qui a provoqué un espace dans l'url.Ce ne semble pas être la raison de cette erreur se produit pour la plupart des gens. Donc, si vous rencontrez ce, l'utilisation
urlencode()
sur toutes les variables qui peuvent contenir d'espace blanc dans sa valeur utilisés comme paramètres d'URL. Ainsi, dans le cas de ma question, le code fixe ressemblera:Aussi, merci à tous pour votre temps et vos réponses, les réponses ont été donnés à titre informatif.
OriginalL'auteur shyam
Vous pourriez créer un contexte de flux avec la version HTTP fixé à 1.0 et utiliser ce contexte, avec
file_get_contents
:En passant: N'oubliez pas échapper à votre URI valeurs d'argument correctement avec
urlencode
.OriginalL'auteur Gumbo
Pouvez-vous renifler ce qui se passe sur le fil? Voir le format de la requête HTTP comme il va sur le fil aiderait beaucoup.
Sans voir que, ma meilleure supposition serait que le serveur n'est pas bien mis en œuvre, et rejette une requête HTTP/1.1. Essayez de définir
--http1.0
sur le Roulage et de voir ce qui se passe...Vous ne pouvez pas le faire avec file_get_contents. Il est extrêmement braindead méthode de récupération qui ne vous donne aucun contrôle sur la façon dont la requête HTTP. Pas les en-têtes sont retournés, et vous ne pouvez rien faire, mais un simple "GET". Récupérer les en-têtes et/ou de faire d'autres méthodes de demande de HTTP, vous aurez à utiliser CURL
OriginalL'auteur Mark Nottingham
Je suis tombé sur le même sujet, et dans mon cas, le coupable était un errant newline/caractère CRLF à la fin de l'URL de la requête, qui est de ne pas se faire attraper par
urlencode()
(ou peut-être qu'il ne le coder, mais il fait tout de même le serveur pour générer le message d'erreur). Une fois j'ai trouvé le problème, la demande a commencé à travailler à nouveau, même sans le contexte de flux d'options.J'espère que cela aidera d'autres.
OriginalL'auteur therealklanni
Quelques temps nous avons encore obtiens le message d'erreur avec
dans ce cas, essayez ceci:
OriginalL'auteur LIGHT
J'ai aussi été confronté à ce même problème..
plus tard, j'ai constaté que lors de l'extraction des résultats de mysql, la Limite de $count ,
$count était -cinq. la fixation de l'url a bien fonctionné.
Il y a un problème dans l'url, et ce n'est pas un file_get_contents ou la version de http problème..
OriginalL'auteur kanchan