使用perl和webdav访问sharepoint

使用perl和webdav访问sharepoint,perl,sharepoint,webdav,kerberos,ntlm,Perl,Sharepoint,Webdav,Kerberos,Ntlm,一个类似的问题被问到了,但是IMHO并没有得到真正的回答 我想使用perl/WebDAV(从Win32主机)将文件上载到sharepoint。要实现这一点,我需要在服务器上使用KERBEROS进行身份验证。在谷歌搜索了几个小时并尝试了不同的方法后,我无法打开连接。目前的代码是: my $agent = HTTP::DAV::UserAgent->new(keep_alive=>1); $agent->agent('Agent'); $agent->timeout(

一个类似的问题被问到了,但是IMHO并没有得到真正的回答

我想使用perl/WebDAV(从Win32主机)将文件上载到sharepoint。要实现这一点,我需要在服务器上使用KERBEROS进行身份验证。在谷歌搜索了几个小时并尝试了不同的方法后,我无法打开连接。目前的代码是:

my $agent = HTTP::DAV::UserAgent->new(keep_alive=>1);  
$agent->agent('Agent');  
$agent->timeout(1000);  
my $d = HTTP::DAV->new(-useragent => $agent);  
$d->credentials( -user=>$user,-pass =>$pass, -url =>$url);  
$d->open( -url=>$url ) or die("Couldn't open $url: " .$d->message . "\n");  
在执行$d->open(…)时,我总是得到“无法打开$url:未经授权。协商”。因此,显然基本的身份验证不起作用

有人能给我指一下正确的路吗?我不习惯使用WebDAV,任何其他机制也适合我。只是想让它工作


编辑1
当将
LWP
Authen::NTLM
一起使用时(如建议的),也不起作用。它会在IIS和Apache上导致
500内部服务器错误。由于相同的错误发生在两个不同的web服务器上(使用两个不同的NTLM实现),我猜
Authen::NTLM
模块中一定有问题

对于
Authen::NTLM
,在我看来,代码是逆向工程的,既不是基于规范实现的,也不是真正可配置的。出现了一个问题,为什么没有用于实现模块

将NTLM与Perl一起使用是否是一个奇特的用例


编辑2

根据Madhur的建议,我尝试使用Curl访问Sharepoint。这很有效。但是通过嗅探Curl的NTLM消息和Perl发送的消息,我发现消息格式在某种程度上有所不同。

而不是使用WebDAV。我建议您使用现成的web服务

本文概述了如何在PERL中使用sharepoint web services:

这是使用web服务上载文件的.NET代码:


将其转换为PERL代码将留给您,因为我使用PERL已经多年了:)

谢谢您的回答。不幸的是,将
LWP
Authen::NTLM
一起使用会在IIS和Apache上导致
500内部服务器错误。我假设在
Authen::NTLM
-实现中有一个错误…我有一些建议,可能有用:1。尝试使用调试选项使用LWP::调试qw(+);2.您可以使用Curl来处理身份验证3。查看第4页@埃克斯:好的。首先,我不知道这个@user是如何工作的。在常见问题解答中也找不到它。坦白地说,我不知道CURL或PERL。我是一个很好的人。如果CURL适合你,那就用它吧。如果您对sharepoint或其相关用法有任何疑问,请点击我。@Madhur:我之所以要使用Perl,是因为我有一个用Perl编写的用于某些软件的构建脚本。构建成功后,我希望将新生成的版本上载到我的Sharepoint,签入它,并调整指向最新版本的链接。此工作流无法使用Curl…@eckes完成:我们将从powershell调用sharepoint web服务,而不是sharepoint对象模型。见: