要得到某个网站的响应,我必须给出一个确切的请求字符串,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