lwp :: userAgent-> new ()에서 정의 된 값을 얻지 않는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1134739

  •  16-09-2019
  •  | 
  •  

문제

cookie_jar 메소드를 사용하는 동안이 오류가 발생합니다.

Can't call method cookie_jar on an undefined value

내 코드는 다음과 같습니다.

my $cookie_jar= new HTTP::Cookies;
my $ua=new LWP::UserAgent;
my %cookies= fetch CGI::Cookie;
my $encoded=$cookies{'SCred'};
$cookie_jar->set_cookie(1, "SCred", $encoded, "/", $SSO_DOMAIN,  "", 0, 0, 60*60, 0);
$ua->cookie_jar($cookie_jar); # I get error on this line

왜이 오류가 발생했는지 아십니까?

도움이 되었습니까?

해결책

코드를 사용해 보았습니다 (엄격하고 경고 및 필수 변수를 프리 변수를 문자열로 바꾸면서 필요한 모듈이라고 생각합니다).

kyle@indigo64 ~[home*]$ cat x.pl
use strict;
use warnings;
use HTTP::Cookies;
use LWP::UserAgent;
use CGI::Cookie;

my $ua         = new LWP::UserAgent;
my %cookies    = fetch CGI::Cookie;
my $encoded    = $cookies{'SCred'};

my $cookie_jar = new HTTP::Cookies;
$cookie_jar->set_cookie(
  1, "SCred", '$encoded',
  "/", '$SSO_DOMAIN',  "",
  0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar);

print "ua: ",$ua,"\n";
print "ua->cookie_jar: ",$ua->cookie_jar,"\n";
mortis@indigo64 ~[home*]$ perl x.pl
ua: LWP::UserAgent=HASH(0x82f8cc8)
ua->cookie_jar: HTTP::Cookies=HASH(0x82f8b84)
kyle@indigo64 ~[home*]$ 

그리고 그것은 작동합니다. 완전한 예제를 게시하거나 '$ ua = new ...'와 $ ua가 다시 할당되거나 Undef로 설정된 '$ ua-> cookie_jar'라인 사이에 줄이 있습니까? cookie_jar로 호출하기 직전에 '$ ua'의 값을 인쇄하면 그것이 undef임을 알 수 있어야합니다. 첫 번째 할당과 해당 메소드를 호출하는 곳 사이의 어딘가에 재설정되어야합니다.

다른 팁

이상한 상호 작용을 배제하려면 다음을 시도하십시오.

my $cookie_jar = HTTP::Cookies->new;
my $ua = LWP::UserAgent->new;
my %cookies = CGI::Cookie->fetch;
my $encoded = $cookies{'SCred'};
$cookie_jar->set_cookie(
    1, "SCred", $encoded, "/", $SSO_DOMAIN,  "", 0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar); # I get error on this line

이제 어떤 이유로 $ua 정의되지 않으므로 생성자 호출을 의미합니다.

my $ua = LWP::UserAgent->new;

실패한. 나는 너무 익숙하지 않습니다 fastcgi. 하지만, LWP::UserAgent 생성자의 실패에 대한 크로크 : 문제의 라인에 어떻게 도달하고 있는지 잘 모르겠습니다.

서버 로그를 확인 했습니까? 어둠 속에서 총 샷 : 다음이 오류 로그에 유용한 정보를 추가합니까?

my $ua = eval { LWP::UserAgent->new }
    or warn "LWP::UserAgent->new failed: $@";

그것이 당신이 얻는 실제 오류라면, 그것은 문제가되지 않습니다. cookie_jar. 그것은 당신이 호출하려는 첫 번째 방법입니다. 사용자 에이전트를 만들 때 실제로 객체를 얻는 것을 확인하십시오.

모든 쿠키 물건을 제거하고 시도하십시오 agent 방법:

use strict;
my $ua = eval { LWP::UserAgent->new }
    or die "Could not make user-agent! $@";
$ua->agent("TestAgent");

생성자에서 문제가 발생하면 잡을 수 있어야합니다. 그러나 스크립트가 아직 죽지 않았다면 다른 잘못된 것이 있다고 생각합니다. lwp :: userAgent :: 새로운 문제가 발생하면 이미 크로크됩니다. 반환 할 수있는 유일한 것은 이미 메소드를 불렀던 정의 된 값입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top