我想向 jira 和 jfrog 發出 POST 請求。當我嘗試在回圈中獲取哈希值時,第二次無法獲取該值。我嘗試從 env 中讀取變數(API 令牌而不是密碼),如果未設定,它將傳遞用戶名和密碼。
my %urls = (
'jira' => {
'url' => 'https://jira.com:123/rest/api/2/issue/',
'token' => 'JIRA_TOKEN'
},
'jfrog' => {
'url' => 'https://jfrog.com/artifactory/api/storage/path/to/artifacts',
'token' => 'JFROG_TOKEN'
}
);
my $jira_ua = Mojo::UserAgent->new();
for my $outer_elem ( keys %urls ) {
for my $inner_elem ( keys %{$urls{$outer_elem}} ) {
# print $inner_elem;
if ( !$ENV{$urls{$outer_elem}{'token'}} ) {
print "Enter username : \n";
my $username = <STDIN>;
chomp($username);
my $passwd = read_password("Enter Password: ");
$url = Mojo::URL->new($urls{$outer_elem}->{'url'})
->userinfo($username.':'.$passwd);
}
else {
if ( $inner_elem eq "jira" ) {
$tx->req->headers->authorization (
"Bearer $ENV{$urls{$outer_elem}->{'token'}}"
);
$url = Mojo::URL->new($urls{$outer_elem}->{'url'})
}
}
print $outer_elem . "\n";
print "logging in to $urls{$outer_elem}->{'url'}\n";
$tx = my $ua->get($url); # <--- line 170
my $res = $tx->res->code;
print $res;
last;
}
}
我得到低于輸出
D:\scripts>perl emtf.pl
jira
Can't call method "get" on an undefined value at emtf.pl line 170.
uj5u.com熱心網友回復:
你得到的錯誤是:
無法在未定義的值上呼叫方法“get”
產生錯誤的代碼行是:
$tx = my $ua->get($urls{$outer_elem}->{'url'});
該錯誤意味著$ua包含undef當您嘗試對其呼叫get()方法時。那是因為你創建了一個$ua在這行代碼上呼叫的新變數——就是my這樣。而且因為您沒有為這個新變數賦值,所以它將包含undef.
我不確定為什么my存在。而且我不確定我是否真的了解您的代碼應該如何作業。還有一個名為的變數$ua已定義但未在上面幾行定義的匿名子例程中使用 ( my( $ua, $tx ) = @_;) 但該變數在該子例程之外不存在。
你是不是,也許是指要使用的行$jira_ua:
$tx = $jira_ua->get($urls{$outer_elem}->{'url'});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/432379.html
標籤:perl 哈希 mojo-useragent
