要得到某個網站的響應,我必須給出一個確切的請求字符串,HTTP/1.1。我用telnet
試了一下,它給了我想要的回覆(重定向,但我需要它)。發送一個簡單的字符串請求與LWP
但是,當我試圖給相同的請求字符串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";
任何人都可以幫助我在這裏?
但我不能,因爲服務器不會接受我的請求。它只接受我上面給出的形狀的請求。 – Lanbo 2011-05-02 14:59:24
@Scán - 如果服務器不靈活,可能唯一的方法就是直接通過套接字或者[Net :: Telnet](http://search.cpan.org/perldoc?Net :: Telnet) – bvr 2011-05-02 16:26:53
@Scán:你怎麼知道服務器不接受請求?它應該,如果'parse()'不是越野車。 – reinierpost 2011-05-03 08:49:07