On Wednesday 08 June 2005 18.43, [EMAIL PROTECTED] wrote:
> Bonjour,
> j'aimerais faire un petit script perl qui commande une page web;
> or �a marche pas...

Je voudrai juste signaler que g�rer un dialogue HTTP n'est pas si simple que 
�a. Il peut arriver qu'un serveur demande par exemple une redirection vers 
une autre adresse, il peut �galement fournir qu'une partie des donn�es, 
retourner un choix d'adresses, demand� des informations sur les cookies 
(RFC2109) etc. La r�f�rence est naturellement la RFC2616 
(ftp://ftp.isi.edu/in-notes/rfc2616.txt) pour HTTP/1.1 et la RFC1945 
(ftp://ftp.isi.edu/in-notes/rfc1945.txt). Naturellement l'on peut n�gliger 
une partie du protocole si le comportement du serveur est pr�dictible.

>
> voici le code (j'ai sniffe avec ethereal la communication pour savoir
> la forme exacte de la requete http et je copie le tout dans $req;
> la ligne "my $req=..." est une seule ligne dans le script mais j'ajoute
> des sauts de ligne ici pour lisibilite) :
> -------------------------------------------
> #!/usr/bin/perl
> use strict;
> use warnings;
>
> use IO::Socket;
>
> my $sock = new IO::Socket::INET(
>       PeerAddr => 'www.edicom.ch',
>       PeerPort=>80,
>       Proto => "tcp");
> die "Could not create socket\n" unless $sock;
> my $req = "GET / HTTP/1.1\r\n
> Connection: Keep-Alive\r\n
> Pragma: no-cache\r\n
> Cache-control: no-cache\r\n
> Accept: text/*, image/jpeg, image/png, image/*, */*\r\n
> Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity\r\n
> Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5\r\n
> Accept-Language: en, US\r\n
> Host: www.edicom.ch\r\n
> Cookie: CP=null*; CFID=971123;OKEN=67014803\r\n\r\n";
>
>
> print $sock $req;
>
> print <$sock>;
>
> close ($sock);
> ----------------------------------------------------
>
> ce qui se passe c'est que le script ne revient jamais. Je dois
> faire CTRL-C.
>
> Si je fais juste "GET /\r\n\r\n", ou "GET / HTTP/1.0\r\n\r\n"
> j'obtient syst�matiquement (pas seulement avec edicom.ch, donc
> c'est envoy� par un routeur?) un
> 400 "bad request".
> Et si je fais :
> GET / HTTP/1.0\r\n
> Host: www.edicom.ch\r\n\r\n
> alors l� �a se bloque (CTRL-C).
>
> Tout �a marche contre le serveur local.
>
> Je comprends pas pourquoi avec perl la _meme_ requete (cf. ethereal) ne
> marche pas.
> Si quelqu'un a une id�e, merci d'avance!
>
> Samuel
>
>
>
>
> _______________________________________________
> gull mailing list
> [email protected]
> http://lists.alphanet.ch/mailman/listinfo/gull

-- 
MuTECH, Martial Guex
Rue des Alpes 3
1452 Les Rasses
Switzerland
Phone:+41 (24) 454 46 35
Fax:+41 (24) 454 46 32
Email: [EMAIL PROTECTED]
_______________________________________________
gull mailing list
[email protected]
http://lists.alphanet.ch/mailman/listinfo/gull

Répondre à