PROPFIND Box.com和WebDav(JackRabbit)

时间:2012-07-03 15:37:25

标签: android webdav jackrabbit box-api

试图绕过Box文件/文件夹ID并支持许多其他服务我决定用WebDAV实现,因为我在我的linux盒子上有点熟悉它。我选择了一个基于JackRabbit修改的库,可以在Android上运行,这似乎符合我的需求。然而,不久我遇到了一个问题。

尝试列出Box的根条目时,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);
            }

1 个答案:

答案 0 :(得分:1)

虽然Box对WebDAV有一些支持,但我们目前才正式支持iOS。我们的测试表明,我们对DAV的实现与Windows本机DAV客户端以及Panic-Transmit Mac特定客户端非常兼容。虽然那里的互动并不完全完美。

Box WebDAV与本机osX(Mac)webDAV客户端不兼容。期待巨大的延迟,因为它看起来客户端在显示任何内容之前尝试加载整个树。

Linux用户可以在这里告诉你StackTrace他们尝试过的各种操作系统webDAV客户端/库中的哪些,以及哪些操作系统比其他操作系统更好。

我们确实有计划在今年晚些时候改变我们的webDAV支持,但是我们没有具体的日期,只是webDAV客户端的性质是这样的,即使我们修复了许多问题它,webDAV上的一些客户体验可能仍然很糟糕。出于这个原因,我们可能只会正式认可每个平台的几个webDAV客户端/库。

希望有所帮助。