使用Apache VFS进行NTLM身份验证

时间:2016-08-03 09:38:21

标签: sharepoint-2013 webdav ntlm apache-commons-httpclient apache-commons-vfs

我正在尝试使用Apache VFS读取作为网络驱动器安装的SharePoint 2013内的文件。我使用以下代码

        try {
        StandardFileSystemManager manager = new StandardFileSystemManager();
        manager.addProvider("http", new WebdavFileProvider());
        manager.setCacheStrategy(CacheStrategy.ON_CALL);
        manager.setFilesCache(new SoftRefFilesCache());
        FileObject fileObject = manager.resolveFile("http://sp2013w2k12r2/PuneetsLibrary/");
        System.out.println(fileObject.getFileSystem().hasCapability(Capability.LIST_CHILDREN));
        System.out.println(fileObject.isFolder());
    } catch (FileSystemException e) {
        e.printStackTrace();
    }

但是我收到以下错误

  

org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme   信息:选择了ntlm身份验证方案   2016年8月3日下午5:29:55 org.apache.commons.httpclient.HttpMethodDirector processWWWAuthChallenge   信息:没有可用于NTLM的凭据@ sp2013w2k12r2:80   org.apache.commons.vfs2.FileSystemException:无法确定文件的类型" http://sp2013w2k12r2/PuneetsLibrary"。       at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1526)       在org.apache.commons.vfs2.provider.AbstractFileObject.isFolder(AbstractFileObject.java:1726)       在org.apache.commons.vfs2.impl.DecoratedFileObject.isFolder(DecoratedFileObject.java:211)       在SharePointVFSMain.main(SharePointVFSMain.java:18)   引起:org.apache.commons.vfs2.FileSystemException:带代码的未知消息"未经授权"。       在org.apache.commons.vfs2.provider.webdav.ExceptionConverter.generate(ExceptionConverter.java:88)       在org.apache.commons.vfs2.provider.webdav.ExceptionConverter.generate(ExceptionConverter.java:41)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.execute(WebdavFileObject.java:594)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.getProperties(WebdavFileObject.java:632)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.getProperties(WebdavFileObject.java:620)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.getProperty(WebdavFileObject.java:664)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.getProperty(WebdavFileObject.java:671)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:716)       在org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doGetType(WebdavFileObject.java:405)       在org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1517)       ......还有3个

1 个答案:

答案 0 :(得分:0)

我意识到必须要做的事情。如果使用具有SharePoint站点权限的用户的凭据运行java进程,则能够读取文档。