OVH Cloud OVH Cloud

Envoi de requete par GET ou URL

5 réponses
Avatar
Fotin Ludovic
Salut à tous,

Je suis en train de me faire un petit outil de MAJ automatique de mon
compte dyndns.org.
Rien de bien compliqué si ce n'est que j'ai un soucis au niveau de la
requete d'update.
Je dois envoyer la requete par GET, elle censée avoir cette tête la :

GET /nic/update?
system=statdns&
hostname=yourhost.ourdomain.ext,yourhost2.dyndns.org&
myip=ipaddress&
wildcard=OFF&
mx=mail.exchanger.ext&
backmx=NO&
offline=NO
HTTP/1.0
Host: members.dyndns.org
Authorization: Basic username:pass
User-Agent: myclient/1.0 me@null.net

Pour la construire pas de problème mais pour l'envoyer c'est une autre
pair de manche. J'ai essayé avec fopen, fsockopen mais à chaque je prend
le retour d'erreur BADAGENT (qui signifie chez eux : "The user agent
that was sent has been blocked for not following these specifications or
no user agent was specified.").

C'est un poil ennuyeux car cela signifie que quand je construit une url
et que je la colle dans le navigateur aucun probleme par contre quand je
fais ca par GET (et ce c'est que mon outil doit faire au final) ca ne
marche plus.

Quelqu'un a une idée ?

Merci.

Ludo

5 réponses

Avatar
Guillaume Brocker
Fotin Ludovic wrote:
Salut à tous,

Je suis en train de me faire un petit outil de MAJ automatique de mon
compte dyndns.org.
Rien de bien compliqué si ce n'est que j'ai un soucis au niveau de la
requete d'update.
Je dois envoyer la requete par GET, elle censée avoir cette tête la :

GET /nic/update?
system=statdns&
hostname=yourhost.ourdomain.ext,yourhost2.dyndns.org&
myip=ipaddress&
wildcard=OFF&
mx=mail.exchanger.ext&
backmx=NO&
offline=NO
HTTP/1.0
Host: members.dyndns.org
Authorization: Basic username:pass
User-Agent: myclient/1.0


Y a-t-il vraiment des retours à la ligne dans l'url que tu utilises ?
Normalement, l'url qui suit la méthode (ici GET) doit se trouver sur la
même ligne.

Pour la construire pas de problème mais pour l'envoyer c'est une autre
pair de manche. J'ai essayé avec fopen, fsockopen mais à chaque je prend
le retour d'erreur BADAGENT (qui signifie chez eux : "The user agent
that was sent has been blocked for not following these specifications or
no user agent was specified.").


Avec fopen, tu ne peux spécifier directement que l'url et pas les champs
additionnels comme "User-agent" et "Authorization". Par contre, avec
fsockopen, en se connectant sur le bon port destination et en envoyant
une requête conforme, cela devrait fonctionner.

C'est un poil ennuyeux car cela signifie que quand je construit une url
et que je la colle dans le navigateur aucun probleme par contre quand je
fais ca par GET (et ce c'est que mon outil doit faire au final) ca ne
marche plus.


Je pense que la requête que tu envoies ne respecte pas scrupuleusement
la spécification HTTP. Peut-être as-tu omis de mettre une ligne vide à
la fin de tes headers. En tout cas, la requête telle qu'elle figure dans
ton message ne permet pas de le savoir. J'ai mis ci-après une version
qui devrait fonctionner. Tout les "rn" représentent les fins de lignes
qui doivent obligatoirement être présentes. L'url qui suit la méthode
GET a été tronquée pour plus de clareté. Dans la version réelle, elle
doit figurer sur une seule et même ligne.

GET /nic/update... HTTP/1.0rn
Host: members.dyndns.orgrn
Authorization: Basic username:passrn
User-Agent: myclient/1.0
rn

Je t'invite également à consulter les RFCs relatives au protocal HTTP.
Voici quelques liens:
<http://www.faqs.org/rfcs/rfc1945.html>
<http://www.faqs.org/rfcs/rfc2616.html>

--
Guillaume Brocker

Avatar
Jedi121
Fotin Ludovic a écrit le 29/02/2004 :
Pour la construire pas de problème mais pour l'envoyer c'est une autre pair
de manche. J'ai essayé avec fopen, fsockopen mais à chaque je prend le retour
d'erreur BADAGENT (qui signifie chez eux : "The user agent that was sent has
been blocked for not following these specifications or no user agent was
specified.").

C'est un poil ennuyeux car cela signifie que quand je construit une url et
que je la colle dans le navigateur aucun probleme par contre quand je fais ca
par GET (et ce c'est que mon outil doit faire au final) ca ne marche plus.

Quelqu'un a une idée ?


Changer le user_agent dans php.ini ?

Avatar
Thierry SCHMIT
bonjour,

confronté au même genre de pbs, je les ais résolu en utilisant
l'extension curl:
http://fr2.php.net/manual/fr/ref.curl.php

thierry
Avatar
ludovic_nospam_
Tout d'abord merci à tous les deux.

j'ai bien recréer la requête comme il faut cad la première partie sur
une seule et même ligne et p'tit rn à la fin de chaque ligne même la
dernière...
mais le serveur me claque toujours la même erreur.

Voici la requête :

GET /nic/update?system=dyndns&hostname=test.dyndns.org&myip=XX.XX.XX.XX&wildcard=OFF&mx=&backmx=NO&offline=NO
HTTP/1.0

Host: members.dyndns.org

Authorization: Basic test:test

Ca m'a l'air correcte mais pourtant....

Ludo
Avatar
ludovic_nospam_
confronté au même genre de pbs, je les ais résolu en utilisant
l'extension curl:
http://fr2.php.net/manual/fr/ref.curl.php


J'avais songé passé par la. J'ai fait un test à l'arrache qui n'a pas
fonctionné.
Va falloir que je plonge plus dans la doc pour re-tester.


En tout cas en construisant l'url comme cela :
(tout sur la meme ligne)
http://test:/
nic/update?system=dyndns&hostname=test.dyndns.org&
myip=XX.XX.XX.XX&wildcard=OFF&mx=&backmx=NO&offline=NO

et en faisant un fopen de cette url cela fonctionne correctement.

Je vais tout de meme voir du côté de CURL pour essayer de faire un
truc un peu plus "clean".

Merci à tous.

Ludo