Perl HTTP请求:当GET成功时POST失败

时间:2013-11-25 09:03:20

标签: perl http

当我尝试使用Perl提交POST请求时,它通常以301重定向结束到主页。这是代码:

use LWP::UserAgent;

$ua = LWP::UserAgent->new;

# This does not work
my $url = 'http://www.opensubtitles.org/en/search2';
my $req = HTTP::Request->new(POST => $url);
$req->content('MovieName=the+terminator+(1996)');


# Pass request to the user agent and get a response back
print $req->as_string."\n";;
my $res = $ua->request($req);
if (!$res->is_success) { 
  print $res->status_line, "\n"; 
}
else { 
  print "Success in posting search\n";
}

为了使其工作,我必须手动使用Firefox,转到网址(!)。然后脚本工作。但是,使用GET请求可以完美地运行:

# This works
my $url = 'http://www.opensubtitles.org/en/search2?MovieName=the+terminator+(1996)';
my $req = HTTP::Request->new(GET => $url);

为什么?

1 个答案:

答案 0 :(得分:2)

该网站不希望该网址为POST,因此会将您重定向回搜索页面。

如果您只是将网址放入地址行,那么Firefox将使用GET,而非POST。这就是原因。