Blame | Last modification | View Log | RSS feed
package Http_get;require 5.002;use Socket;use strict;sub new{my $self = {};$self->{CONTENT} = undef;$self->{SUCCESS} = undef;bless($self);return $self;}sub request{my $self = shift;$self->{CONTENT} = undef;$self->{SUCCESS} = undef;my $url = shift || return;my $port = 80;if(substr($url, 0, 7) ne 'http://') {return;}my $host;my $uri;if((my $first_slash=index($url, '/', 7))!=-1) {if((my $dots=rindex($url, ':', $first_slash))>7) {$port=substr($url, $dots+1, $first_slash-$dots-1);$first_slash=$dots;}$host=substr($url, 7, $first_slash-7);$uri=substr($url, $first_slash);}else {$host=substr($url, 7);$uri = '/';}my $iaddr = inet_aton($host) || return;my $paddr = sockaddr_in($port, $iaddr);my $proto = getprotobyname('tcp');socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or return;connect(SOCKET, $paddr) or return;# flush SOCKET after every writeselect(SOCKET); $|=1; select(STDOUT);print SOCKET "GET $uri HTTP/1.0\n";print SOCKET "Host: $host\n\n";# skip headerswhile (<SOCKET> =~ /[^\s]/) { }$self->{SUCCESS}=1;while (<SOCKET>) {$self->{CONTENT}.=$_ ;}close SOCKET;return $self;}sub is_success {my $self = shift;return $self->{SUCCESS};}sub content {my $self = shift;return $self->{CONTENT};}1;