问题描述
我正在尝试通过WebDav协议(更具体地说是Perl的HTTP :: DAV模块)访问远程服务器。
根据其文档,与远程目录的耦合以下列方式发生:
use HTTP::DAV;
$d = HTTP::DAV->new();
$url = "http://host.org:8080/dav/";
$d->credentials(
-user => "pcollins",-pass => "mypass",-url => $url,-realm => "DAV Realm"
);
$d->open( -url => $url )
or die("Couldn't open $url: " .$d->message . "\n");
我创建了一个本地webdav目录,可以通过http protocol
对其进行完美访问。
根据HTTP::DAV
的文档,使用https
模块也应有Crypt::SSLeay
的支持。
Crypt::SSLeay
的文档为我们提供了LWP::UserAgent
模块内部使用的以下synopsys,从而为我们提供了基于https
协议的Web资源访问:
use Net::SSL;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(
ssl_opts => { verify_hostname => 0 },);
my $response = $ua->get('https://www.example.com/');
print $response->content,"\n";
我的问题是:
如何结合HTTP::DAV and Crypt::SSLeay
模块以通过WebDav and https
协议访问Web资源?
类似以下内容:
use HTTP::DAV;
$d = HTTP::DAV->new();
$url = "https://host.org:8080/dav/";
#...
解决方法
这未经测试,但是通过浏览文档,这应该可以工作:
$d->get_user_agent->ssl_opts( verify_hostname => 0 );
HTTP::DAV的文档说:
get_user_agent
返回客户端的工作HTTP :: DAV :: UserAgent对象。
您可能想与HTTP :: DAV :: UserAgent对象进行交互,以修改请求标头或提供高级身份验证过程。
没有记录HTTP :: DAV :: UserAgent,但是its source code显示它是LWP :: UserAgent的子类。 LWP::UserAgent的文档中提到了ssl_opts
方法,用于为用户代理对象设置SSL选项。