Чтобы получить ответ от определенного веб-сайта, я должен дать одну точную строку запроса, HTTP / 1.1. Я попробовал этот с telnet
, он дает мне ответ, который я хочу (перенаправление, но мне это нужно).
Но когда я пытаюсь передать ту же строку запроса на HTTP::Request->parse()
, я просто получаю сообщение 400 URL must be absolute
.
Я не уверен, что это веб-сайт или LWP
дает мне это, потому что, как я уже сказал, ответ работал с telnet
.
Это код:
my $req = "GET / HTTP/1.1\n".
"Host: www.example-site.de\n".
"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\n".
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n".
"Accept-Language: en-us,en;q=0.5\n".
"Accept-Encoding: gzip, deflate\n".
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n".
"Keep-Alive: 115\n".
"Connection: keep-alive\n";
# Gives correct request string
print HTTP::Request->parse($req)->as_string;
my $ua = LWP::UserAgent->new( cookie_jar => {}, agent => '' );
my $response = $ua->request(HTTP::Request->parse($req));
# 400 error
print $response->as_string,"\n";
Кто-нибудь может помочь мне здесь?