Android PROPFIND Box.com和WebDav(JackRabbit)

Android PROPFIND Box.com和WebDav(JackRabbit),android,webdav,jackrabbit,box-api,Android,Webdav,Jackrabbit,Box Api,为了绕过Box文件/文件夹ID并支持许多其他服务,我决定使用WebDAV实现,因为我对linux Box上的WebDAV有些熟悉。我选择了一个基于JackRabbit的库,该库被修改为在Android上工作,似乎适合我的需要。然而,没过多久我就遇到了一个问题 尝试列出框的根条目时,multiStatus.getResponses()返回一个空数组。当访问另一个webdav服务器时,我得到了预期的响应。两台服务器都返回状态代码207,如预期的那样 我的代码在下面,有什么想法吗 编辑:我可以移动文件

为了绕过Box文件/文件夹ID并支持许多其他服务,我决定使用WebDAV实现,因为我对linux Box上的WebDAV有些熟悉。我选择了一个基于JackRabbit的库,该库被修改为在Android上工作,似乎适合我的需要。然而,没过多久我就遇到了一个问题

尝试列出框的根条目时,multiStatus.getResponses()返回一个空数组。当访问另一个webdav服务器时,我得到了预期的响应。两台服务器都返回状态代码207,如预期的那样

我的代码在下面,有什么想法吗

编辑:我可以移动文件,但列出目录条目不起作用:/

            String host = "https://www.box.com/dav/";
            //String host = "http://demo.sabredav.org/";
            hostConfig = new HostConfiguration();
            hostConfig.setHost(host); 
            HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
            HttpConnectionManagerParams params = new HttpConnectionManagerParams();
            int maxHostConnections = 20;
            params.setMaxConnectionsPerHost(hostConfig, maxHostConnections);
            connectionManager.setParams(params);    
            client = new HttpClient(connectionManager);
            Credentials creds = new UsernamePasswordCredentials("BOXEMAILADDRESS", "MYBOXPASSWORD");
            //Credentials creds = new UsernamePasswordCredentials("testuser", "test");
            client.getState().setCredentials(AuthScope.ANY, creds);
            client.setHostConfiguration(hostConfig);
            try
            {
                String propfindUri = host;
                DavMethod method = new PropFindMethod(propfindUri, DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
                client.executeMethod(method);
                Log.i("Status: " + method.getStatusCode());
                MultiStatus multiStatus = method.getResponseBodyAsMultiStatus();
                MultiStatusResponse[] responses = multiStatus.getResponses();
                Log.i("Length: " + responses.length);
                for(MultiStatusResponse response : responses)
                {
                    Log.i("File: " + response.getHref());
                }
            }
            catch (Exception e) 
            {
                Log.printStackTrace(e);
            }

虽然Box对WebDAV有一些支持,但我们目前只正式支持iOS。我们的测试表明,我们的DAV实现在Windows本机DAV客户端以及特定于Mac的紧急传输客户端上运行良好。虽然那里的互动并不完全完美

Box WebDAV无法与本机osX(Mac)WebDAV客户端配合使用。预计会有巨大的延迟,因为客户端似乎试图在显示任何内容之前加载整个树

Linux用户可以在StackTrace上告诉您,他们尝试过各种OS webDAV客户机/LIB中的哪些,以及哪些比其他客户机工作得更好

我们确实计划在今年晚些时候扭转局面,将webDAV支持提高10倍,但我们没有具体的日期,而且webDAV客户端的性质是这样的,即使我们解决了许多问题,webDAV上的一些客户端体验可能仍然很差。因此,我们可能只正式认可每个平台的两个webDAV客户端/LIB


希望有帮助

我在列出Box.com的WebDAV的结果时也遇到了问题。我在iOS上使用DAVKit,它与iDisk和其他服务配合得很好,但是Box返回一个空的PROPFIND,带有我尝试的路径和URL的任何组合。。。