0

Box のファイル/フォルダー ID をバイパスし、他の多くのサービスもサポートしようとして、Linux ボックスで WebDAV にある程度慣れているため、WebDAV を使用して実装することにしました。Android で動作するように修正された JackRabbit に基づいたライブラリを選択しました。しかし、問題が発生するまでそう長くはかかりませんでした。

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 で、さまざまな OS webDAV クライアント/ライブラリのどれを試し、どれが他のものよりもうまく機能したかを知ることができるかもしれません。

今年後半には、クランクを回して webDAV サポートを 10 倍改善する計画がありますが、具体的な日付はありません。また、webDAV クライアントの性質上、問題の多くを修正したとしても、 WebDAV でのクライアント エクスペリエンスは、まだうまくいかないかもしれません。そのため、プラットフォームごとに 2 つの webDAV クライアント/ライブラリのみを公式に承認する場合があります。

それが役立つことを願っています。

于 2012-07-11T18:32:20.273 に答える