0

为了绕过 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);
            }
4

1 回答 1

1

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

Box WebDAV 不适用于本机 osX (Mac) webDAV 客户端。预计会有巨大的延迟,因为看起来客户端会在显示任何内容之前尝试加载整个树。

Linux 用户可能会在 StackTrace 上告诉您他们尝试过的各种操作系统 webDAV 客户端/库中的哪些以及哪些比其他的运行得更好。

We do have plans to turn the crank and 10x improve our webDAV support sometime later this year, but we do not have a specific date, and just the nature of webDAV clients is such that even when we fix many of the issues with it, some client experiences on webDAV may still suck. For that reason we may only officially endorse a couple webDAV clients/libs per platform.

Hope that helps.

于 2012-07-11T18:32:20.273 回答