pospos | 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 :
- print get("http://www.google.fr/" );
- sub get {
- my $url = shift;
- my ($host, $port, $path) = $url =~ m,^http://([^/:\@]+)(?::(\d+))?(/\S*)?$,;
- $port ||= 80;
- $path ||= "/";
- require IO::Socket;
- local($^W) = 0;
- my $sock = IO::Socket::INET->new(PeerAddr => $host,
- PeerPort => $port,
- Proto => 'tcp',
- Timeout => 60) || return undef;
- $sock->autoflush;
- my $netloc = $host;
- $netloc .= ":$port" if $port != 80;
- print $sock join("\015\012" =>
- "GET $path HTTP/1.0",
- "Host: $netloc",
- "User-Agent: Monsieur Tomate Navigator/5.0",
- "", "" );
-
- my $buf = "";
- my $n;
- 1 while $n = sysread($sock, $buf, 8*1024, length($buf));
- return undef unless defined($n);
-
- if ($buf =~ m,^HTTP/\d+\.\d+\s+(\d+)[^\012]*\012,) {
- my $code = $1;
- #print "CODE=$code\n$buf\n";
- if ($code =~ /^30[1237]/ && $buf =~ /\012Location:\s*(\S+)/) {
- # redirect
- my $url = $1;
- return undef if $loop_check{$url}++;
- return _get($url, $host, $port, $path);
- }
- return undef unless $code =~ /^2/;
- $buf =~ s/.+?\015?\012\015?\012//s; # zap header
- }
-
- return $buf;
- }
|
Message édité par pospos le 08-03-2003 à 11:41:34
|