使用Java从Sharepoint下载文件

罗伯特

我是Sharepoint的新手,我试图编写一个Java程序来处理存储在sharepoint文档库中的csv文件。我了解到,有一个用于共享点的新REST API,但似乎它需要通过应用程序注册进行身份验证,但是我对该共享点站点没有管理员权限,因此我无法使用REST API(?)。因此,我选择使用肥皂。

该文档库页面的网址如下:

http://sharepoint/sites/pitpublishing/sales/Management_Distribution/Forms/AllItems.aspx?RootFolder=%2Fsites%2Fpitpublishing%2Fsales%2FManagement_Distribution%2FClar_Data&FolderCTID=0x012000C12183D9A264144BBD3D315xxxxxxx&View={F7D1xxx-62FD-428B-80EE-C44xxxxxx} 

我对用肥皂消费共享点感到很困惑。我已经从下载了wsdl文件

http://sharepoint/sites/pitpublishing/sales/_vti_bin/copy.asmx?WSDL

并为他们创建了存根。我认为应该有一个类似getDocumentLibrary()的方法,该方法可以操纵目录库,但是我只发现与List,Copy和View有关的东西,而许多与List有关的东西。我试过了,我不知道应该为他们提供什么参数

http://sharepoint/sites/pitpublishing/sales/Management_Distribution

但总是在getListItems()处出错:

SEVERE: Exception. See stacktrace.javax.xml.ws.soap.SOAPFaultException: Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.

如果我在同一站点下的列表中设置列表名称,则getListItems()将返回null。

有谁可以帮助我吗?非常感谢你!

编辑:

我使用的代码实际上是此博客中的教程代码

public static void main(String[] args) {
//      if(args.length != 3) {
//          logger.log(Level.SEVERE, "This must be called with parameters: <userId> <password> <config file path>");
//          return;
//      }

    try {
        String userId = args[0];
        String password = args[1];
        WatcherConfig config = WatcherConfig.loadConfig("C:\\Desktop\\sharepoint\\watcherConfig.xml");//; //args[2];args[2]);
        Authenticator.setDefault(new FnmAuthenticator(userId, password));

        Lists stub1 = new Lists(config.getListsWsdlUrl());
        ListsSoap listService = stub1.getListsSoap();
        List<SPDocument> docs = getDocuments(listService, config.getListName(), null, "100");

        Copy stub2 = new Copy(config.getCopyWsdlUrl());
        CopySoap copyService = stub2.getCopySoap();     

        //process document
        for(SPDocument doc: docs) {
            //make sure we download all attachments first
            if(!doc.isEmail())
                processDocument(listService, copyService, config, doc);
        }

        for(SPDocument doc: docs) {
            //after we download all attachments, we process the emails.
            if(doc.isEmail())
                processDocument(listService, copyService, config, doc);
        }
    } catch (Exception e) {
        System.out.println(e);
        System.exit(1);
    }
}

和getDocuments()的一部分在这里:

public static List<SPDocument> getDocuments(ListsSoap port, String listName,
        ArrayList<String> listColumnNames, String rowLimit) {

    List<SPDocument> docs = new ArrayList<SPDocument>();

    if (port != null && listName != null 
            && rowLimit != null) {

        try {
            // Here are additional parameters that may be set
            String viewName = "{534xxxx-4D8B-4B1D-91E3-D2ECB6xxxxx}";
            GetListItems.ViewFields viewFields = null;
            GetListItems.Query query = null;
            GetListItems.QueryOptions queryOptions = null;
            String webID = "";

            // Calling the List Web Service
            GetListItemsResponse.GetListItemsResult result = port
                    .getListItems(listName, viewName, query, viewFields,
                            rowLimit, queryOptions, webID);

            Object listResult = result.getContent().get(0);
            ......

Watcherconfig.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:watcherConfig xmlns:ns2="com.fanniemae.integration.sharepoint.clients">
<dispatcherList>
    <dispatcherConfig matchingPattern="*" invokingCommand="D:\java\jdk15\bin\java.exe"/>
</dispatcherList>
<spDocumentArchiveUrl>http://sharepoint/sites/pitpublishing/sales/Management_Distribution/Clari_Data</spDocumentArchiveUrl>
<spDocumentInUrl>http://sharepoint/sites/pitpublishing/sales/Management_Distribution/Clari_Data</spDocumentInUrl>
<documentWorkingDir>C:\Desktop\sharepoint</documentWorkingDir>

<listsWsdlPath>C:\Desktop\sharepoint\Lists.wsdl</listsWsdlPath>
<copyWsdlPath>C:\Desktop\sharepoint\Copy.wsdl</copyWsdlPath>
<viewsWsdlPath>C:\Desktop\sharepoint\Views.wsdl</viewsWsdlPath>

<rowLimit>100000</rowLimit>

罗伯特

最后,我能够使用Python访问这些文件,请在此处查看我的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章