WWW-Authentication
Hej,Jeg vil gerne finde ud af, hvordan men skrive www-authentication i perl med både en socket og en LWP::agent. Jeg har en metod, som bruges i forbindelse med en socket "GET" request og en anden metod, der gøre det samme bare ved at anvende LWP::Agent i stedet. Hvis UID og PWD var begge to lige "sharpe", hvordan kunne jeg udvide de to nedenstående metoder med at tilføje www-authentication?
Mange tak!!
# SOCKET
sub do_request($$)
{
my ($request, $host, $socket, $data);
my %HEADERS;
$request = shift();
$host = shift();
$socket = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => "http(80)",
Proto => "tcp") || die($!);
print($socket "GET $request http:\/\/HTTP\/1.0\nHost: $host\nWWW-Authenticate: Basic realm="user:passwd"\n\r\n\r");
while ($data = <$socket>)
{
chomp($data);
if ($data =~ /^HTTP\/1\.\d\s(\d{3})/) {
$HEADERS{_rc} = $1;
} elsif ($data =~ /^([a-z0-9_-]+):\s*(.*)/i) {
$HEADERS{$1} = $2;
} else {
last();
}
}
shutdown($socket, 2);
return %HEADERS;
}
# LWP::Agent
sub do_request($$)
{
my ($arg, $host, $ua, $request, $response);
$arg = shift();
$host = shift();
$ua = LWP::UserAgent->new(keep_alive => 1, timeout => 60);
$request = HTTP::Request->new('GET', "http://$host$arg");
$response = $ua->request($request);
%RESPONSE = %{$response};
return %RESPONSE;
}
På forhånd tak!
Mvh,
sharpe
