代码之家  ›  专栏  ›  技术社区  ›  eckes

使用Perl和WebDAV访问SharePoint

  •  3
  • eckes  · 技术社区  · 15 年前

    有人问了一个类似的问题 question 494120 但是我没有得到真正的回答…

    我想使用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->打开(…)时,我总是得到“无法打开$url:未经授权”。谈判”。所以,显然,基本身份验证不起作用。

    有人能给我指一条正确的路吗?我没有固定使用WebDAV,任何其他机制也适合我。只是想让它工作…


    编辑1
    使用时 LWP 随着 Authen::NTLM (根据建议 Madhur )也不起作用。结果是 500 internal server error 在IIS和Apache上。由于相同的错误发生在两个不同的Web服务器上(有两个不同的NTLM实现),我想在 身份:NTLM 模块。

    Looking at the implementation 属于 身份:NTLM 在我看来,代码有点逆向工程,既没有基于规范实现,也没有真正的可配置性。为什么会出现这样的问题? the specification 不是用来实现模块的…

    与Perl一起使用NTLM是不是一个非常奇特的用例?


    编辑2
    基于Madhur的建议,我尝试使用curl访问SharePoint。这是可行的。但是,通过嗅探curl和perl发送的NTLM消息,我发现消息格式有所不同。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Madhur Ahuja    15 年前

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

    本文概述了如何在Perl中使用SharePointWeb服务:

    http://www.squish.net/log/2008/10/11/perl-sharepoint/

    http://shareperl.blogspot.com/

    这是使用Web服务上载文件的.NET代码: http://www.oriolardevol.com/Article/Details/3

    将它转换为Perl代码留给您,这是我使用Perl以来的几年时间:)