Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 强制http代理与已使用LWP::UserAgent的模块一起使用?_Perl - Fatal编程技术网

Perl 强制http代理与已使用LWP::UserAgent的模块一起使用?

Perl 强制http代理与已使用LWP::UserAgent的模块一起使用?,perl,Perl,我希望将代理服务器与第三方SDK结合使用,但SDK在内部使用LWP::UserAgent,并且在其API中不公开任何代理设置。我试图设置一个合适的环境变量,但模块似乎无法识别它。有没有办法解决这个问题(不修改模块本身) [john0839@478261-apps~]$./netapp_命令_proxy.pl文件RIP myuser mypass 在netapp-manageability-sdk-9.4/lib/perl/netapp/OntapClusterAPI.pm行109445中找不到A

我希望将代理服务器与第三方SDK结合使用,但SDK在内部使用LWP::UserAgent,并且在其API中不公开任何代理设置。我试图设置一个合适的环境变量,但模块似乎无法识别它。有没有办法解决这个问题(不修改模块本身)

[john0839@478261-apps~]$./netapp_命令_proxy.pl文件RIP myuser mypass
在netapp-manageability-sdk-9.4/lib/perl/netapp/OntapClusterAPI.pm行109445中找不到API环境代理的定义。

您已经确定需要在UserAgent对象上调用
env_proxy()
。但是,
NaServer
似乎不是
LWP::UserAgent
的子类,因此您不能像在示例代码中尝试的那样在该类上调用该方法

让我们看看这些线索。这本书有一些有趣的文本

如果未提供
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;
到代码的顶部


(注意,我还没有时间来测试。)

试着看看源代码中是否有像
$s->ua
这样的lwp ua对象,这可能是你唯一的机会,或者看看lwp::ua如何与此组件一起工作的文档。如果能工作,那就太棒了!我回到办公室后再做测试。大家第四节快乐@约翰霍姆斯:第四什么?对不起,七月四日。这里是美国人。嗯,我有一些坏消息要报告。设置该环境变量似乎不会强制使用代理。我在模拟防火墙配置,在端点上有一个ACL,在有代理变量和没有代理变量的情况下,我得到了相同的503错误:@JohnHelms:LWP::UserAgent的哪个版本?在6.03版中添加了自动运行
env_proxy()
的代码。我是从警察局得到这个消息的。
$ENV{PERL_LWP_ENV_PROXY} = 1;