2012-06-19 1 views
3

테스트 용으로 Mojolicious 라이브러리를 사용하기 시작했으며 응답에서 쿠키를 추출 할 때까지 모든 것이 잘 작동했습니다.Mojolicious 사용자 에이전트 응답에서 쿠키 추출

$ua = Mojo::UserAgent->new(); 
$ua->on(error => sub { my ($ua, $error) = @_; say "This looks bad: $error"; }); 
$ua->max_redirects(1)->connect_timeout(10)->request_timeout(20); 
$ua->cookie_jar(Mojo::CookieJar->new); 

# ... later ... 

my $tx = $ua->get($url); 
my $jar = $ua->cookie_jar->extract($tx); # This is undef 

내가 그러나 LWP :: 해당 UserAgent를 통해 쿠키를 추출 할 수 있습니다 :

나는 여러 변종을 시도했습니다. 그러나 LWP는 현재 여러 옵션을 사용할 수없는 여러 가지 문제가 있습니다. 여기에 비교를 위해서 쿠키를 추출하는 LWP 코드가 있습니다.

my $lwp = LWP::UserAgent->new(cookie_jar => {}, timeout => 20, max_redirect => 1); 
push @{ $lwp->requests_redirectable }, 'POST'; 
my $response = $lwp->get($url); 
die $response->status_line unless $response->is_success; 
$lwp->cookie_jar->scan(\&ScanCookies); 

sub ScanCookies { 
    my ($version, $key, $value) = @_; 
    say "$key = $value"; 
} 

그래서 나는 $ url 등이 맞다는 것을 알고 있습니다.

편집 : 나는 또한 세션 ID가 제대로 처리하기 때문에 쿠키, 확실히 사용자 에이전트에 점점 언급해야 : 난 내가 Edit2가 딸기 5.14

를 사용하고 있음을 언급해야한다. 불행히도, 나는 (사이트 테스트를 위해) 다른 쿠키에 접근 할 필요가있다. 그리고 나는 그들에게 접근하기위한 적절한 주문을받을 수없는 것처럼 보인다 ... 나는 이것이 프로그래머 문제라고 생각한다고 말하고있다. . 이

+1

나는 $ URL이 포함 된 내용을 문자 궁금 ... 당신이 $ 키를 확인할 수 있습니다 귀하의 ScanCookies에서 $ URL이 정말 동일? – raina77ow

+0

URL에 몇 가지 쿼리 매개 변수가 있습니다. 너무 이상한 tho. – telesphore4

답변

1

사용 :

$tx->res->cookies 
+0

오른쪽 문서는 배열 참조로 사용할 수 있어야한다고 말합니다. 스칼라라고 말하세요 (@ {$ tx-> res-> cookies}); 0을 산출한다; – telesphore4

+1

응답이있을 수 있습니다 쿠키가 없습니까? 'MOJO_MAX_REDIRECTS = 1 perl -MMojo :: UserAgent -E '를 시도하십시오. $ u = Mojo :: UserAgent-> new; @ {($ u-> get ("http://google.com/")) -> res-> cookies} '에 대한 ($ _-> name, "\ t", $ _ . –

+0

약간의 수정 (창 때문에)으로 이것을했는데 쿠키가 있습니다. 흠 ... 웹 서버에서 리디렉션을 받고 있습니다. 302 답장에 쿠키가 있고 다음 200 답장이 아닌지 궁금합니다. 말리면서 보자. [나중에] 확인, 초기 302 쿠키가 있습니다. 이제 문제는 이것이 중요한 것인가? 나는 그 쿠키가 항아리에 만들어 져야한다고 생각했지만 ... 나는 대답에서 그것들을 추출하려고 노력하고있다. ... t4를 통해 그것을 생각해라. :) – telesphore4