perl lwp中的饼干

Wer*_*ika 1 perl httpwebrequest lwp

我曾经在JAVA中为我编写了一个简单的"爬虫"来下载http页面.现在,我正在尝试使用LWP模块将相同的内容重写为Perl.

这是我的Java代码(工作正常):

String referer = "http://example.com";
String url = "http://example.com/something/cgi-bin/something.cgi";
String params= "a=0&b=1";

HttpState initialState = new HttpState(); HttpClient httpclient = new HttpClient(); httpclient.setState(initialState); httpclient.getParams().setCookiePolicy(CookiePolicy.NETSCAPE);

PostMethod postMethod = new PostMethod(url); postMethod.addRequestHeader("Referer", referer); postMethod.addRequestHeader("User-Agent", " Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"); postMethod.addRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8"); postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");

String length = String.valueOf(params.length()); postMethod.addRequestHeader("Content-Length", length); postMethod.setRequestBody(params);

httpclient.executeMethod(postMethod);

这是Perl版本:

my $referer = "http://example.com/something/cgi-bin/something.cgi?module=A";
my $url = "http://example.com/something/cgi-bin/something.cgi";
my @headers = (
  'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13',
  'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Referer' => $referer,
  'Content-Type' => 'application/x-www-form-urlencoded',
);

my @params = (
    'a' => '0',
    'b' => '1',
);

my $browser = LWP::UserAgent->new( );
$browser->cookie_jar({});

$response = $browser->post($url, @params, @headers);
print $response->content;
Run Code Online (Sandbox Code Playgroud)

post请求正确执行,但我得到另一个(主)网页.好像cookie不能正常工作......

有什么猜错是什么?为什么我从JAVA和perl程序得到不同的结果?