簡體   English   中英

強制將HTTP代理與已經使用LWP :: UserAgent的模塊一起使用?

[英]Force http proxy use with module that already uses LWP::UserAgent?

我想將代理服務器與第三方SDK結合使用,但是SDK在內部使用LWP :: UserAgent,並且在其API中未公開任何代理設置。 我嘗試設置適當的環境變量,但是模塊似乎無法識別它。 有沒有解決的辦法(無需修改模塊本身)?

$ENV{HTTPS_PROXY} = 'http://$proxyip:$proxyport';

my $s = NaServer->new ($filer, 1, 20);
$s->set_style(LOGIN);
$s->set_transport_type(HTTPS);
$s->set_server_type(FILER);
$s->set_port(443);
$s->set_admin_user($user, $pass);
$s->env_proxy;

[john0839 @ 478261-apps〜] $ ./netapp_command_proxy.pl filerip myuser mypass在netapp-manageability-sdk-9.4 / lib / perl / NetApp / OntapClusterAPI.pm行109445中找不到API env-proxy的定義。

您已經確定需要在UserAgent對象上調用env_proxy() 但是NaServer似乎不是LWP::UserAgent的子類,因此您不能像在示例代碼中嘗試的那樣在該類上調用方法。

讓我們看一下LWP::UserAgent的文檔以獲取線索。 new()部分有一些有趣的文字。

如果未提供env_proxy ,則PERL_LWP_ENV_PROXY環境變量控制初始化期間是否在LWP :: UserAgent中調用“ env_proxy”。

在我看來,正是為這種情況提供了此功能。 如果您無權訪問該對象的構造函數,則可以使用此環境變量來控制代理的使用。 構造函數中的代碼如下所示:

my $env_proxy = exists $cnf{env_proxy} ? delete $cnf{env_proxy} : $ENV{PERL_LWP_ENV_PROXY};

然后,

$self->env_proxy if $env_proxy;

因此,解決方法似乎是要添加:

$ENV{PERL_LWP_ENV_PROXY} = 1;

到代碼的頂部

(注意,我還沒有時間進行測試。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM