Méthode GET sans LWP::Simple [résolu]

Méthode GET sans LWP::Simple [résolu] - Perl - Programmation

Marsh Posté le 07-03-2003 à 02:53:08    

Je voudrais faire une méthode GET (pour exécuter un fichier à distance donc), sans utiliser la librairie LWP::Simple qui n'est pas disponible sur mon server. Quelle est la fonction qui remplace cette librairie ?


Message édité par monsieur tomate le 08-03-2003 à 14:05:05

---------------
HardGamers.org
Reply

Marsh Posté le 07-03-2003 à 02:53:08   

Reply

Marsh Posté le 07-03-2003 à 09:31:52    

aucune, tu es obligé d'utiliser unmodule perl.

Reply

Marsh Posté le 07-03-2003 à 09:33:18    

heu attends, je comprends pas : si c pour exécuter une méthode à distance, ça veut dire que tu lance ton script perl depuis ton pc => qu'est-ce qui t'empêche d'installer LWP??? :??:

Reply

Marsh Posté le 07-03-2003 à 10:55:25    

non, tu peux le faire avec un serveur, avec

Code :
  1. use LWP::Simple


au début du fichier
je le sais paske si je ne le fais pas, ça plante...


---------------
HardGamers.org
Reply

Marsh Posté le 07-03-2003 à 11:45:37    

oui, c ce que je dit! tu utilise le module perl LWP::Simple!  :pt1cable:

Reply

Marsh Posté le 07-03-2003 à 11:47:17    

je répondais à
"si c pour exécuter une méthode à distance, ça veut dire que tu lance ton script perl depuis ton pc => qu'est-ce qui t'empêche d'installer LWP??? "
 
le module a été créé en Perl, il doit bien y avoir une astuce (genre un HTTP::request ou une merde du genre, non ?)


---------------
HardGamers.org
Reply

Marsh Posté le 07-03-2003 à 20:58:50    

up!


---------------
HardGamers.org
Reply

Marsh Posté le 08-03-2003 à 11:20:16    

ya d'autres modules que tu peu utiliser, souvent plus legers que lwp.
 
ya HTTP::Lite et HTTP::MHTTP, et si t'es sous windows tu peux par exemple utiliser win32::Internet
 
Sinon tu peu aussi te faire une petit focntion à la main avec des sockets. Par exemple en s'inspirant simplement de la fonction get de lwp::Simple:
 

Code :
  1. print get("http://www.google.fr/" );
  2. sub get {
  3.         my $url = shift;
  4.         my ($host, $port, $path) = $url =~ m,^http://([^/:\@]+)(?::(\d+))?(/\S*)?$,;
  5.         $port ||= 80;
  6.         $path ||= "/";
  7.         require IO::Socket;
  8.         local($^W) = 0;
  9.         my $sock = IO::Socket::INET->new(PeerAddr => $host,
  10.                                         PeerPort => $port,
  11.                                         Proto    => 'tcp',
  12.                                         Timeout  => 60) || return undef;
  13.        $sock->autoflush;
  14.        my $netloc = $host;
  15.        $netloc .= ":$port" if $port != 80;
  16.        print $sock join("\015\012" =>
  17.                         "GET $path HTTP/1.0",
  18.                         "Host: $netloc",
  19.                         "User-Agent: Monsieur Tomate Navigator/5.0",
  20.                         "", "" );
  21.    
  22.        my $buf = "";
  23.        my $n;
  24.        1 while $n = sysread($sock, $buf, 8*1024, length($buf));
  25.        return undef unless defined($n);
  26.    
  27.        if ($buf =~ m,^HTTP/\d+\.\d+\s+(\d+)[^\012]*\012,) {
  28.              my $code = $1;
  29.              #print "CODE=$code\n$buf\n";
  30.              if ($code =~ /^30[1237]/ && $buf =~ /\012Location:\s*(\S+)/) {
  31.                    # redirect
  32.                    my $url = $1;
  33.                    return undef if $loop_check{$url}++;
  34.                    return _get($url, $host, $port, $path);
  35.              }
  36.              return undef unless $code =~ /^2/;
  37.              $buf =~ s/.+?\015?\012\015?\012//s;  # zap header
  38.        }
  39.    
  40.        return $buf;
  41. }


Message édité par pospos le 08-03-2003 à 11:41:34
Reply

Marsh Posté le 08-03-2003 à 11:22:16    

ok merci, je vais essayer tout ça


---------------
HardGamers.org
Reply

Marsh Posté le 08-03-2003 à 11:25:21    

j'ai edité yavait une erreur

Reply

Marsh Posté le 08-03-2003 à 11:25:21   

Reply

Marsh Posté le 08-03-2003 à 11:29:13    

arf, le temps que tu édites, j'étais déjà en train d'éditeur les erreurs. super ça marche ! merci !!


---------------
HardGamers.org
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed