2012-07-03 41 views
0

爲了繞過Box文件/文件夾ID並支持許多其他服務,我決定使用WebDAV來實現,因爲我在我的Linux機器上有點熟悉它。我選擇了一個基於JackRabbit的庫進行了修改,以在Android上工作,這似乎滿足了我的需求。但是,直到我遇到問題時纔會這樣。PROPFIND Box.com和WebDav(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); 
      } 
+0

獲取HTTP跟蹤。 –

+0

我也遇到了來自Box.com的WebDAV上市結果的問題。我在iOS上使用DAVKit,它可以很好地處理iDisk和其他服務,但是Box會返回一個空的PROPFIND,以及我試過的任何路徑和URL的組合。 – DaGaMs

回答

1

雖然箱體具有對WebDAV的一些支持,我們才正式支持適用於iOS的時刻。我們的測試表明,我們的DAV實現在Windows本機DAV客戶端以及Panic-Transmit Mac特定客戶端上運行得非常好。雖然那裏的互動並不完全完美。

Box WebDAV與本地osX(Mac)webDAV客戶端不兼容。預計會有巨大的延遲,因爲看起來客戶端在顯示任何內容之前會嘗試加載整棵樹。

Linux用戶可能會在StackTrace上告訴你哪些操作系統的webDAV客戶機/庫已經嘗試過哪些,哪些已經比其他機器更好。

我們計劃在今年晚些時候改進我們的webDAV支持,但我們沒有具體的日期,webDAV客戶端的性質就是這樣,即使我們解決了很多問題有了它,webDAV上的一些客戶端體驗可能仍然很糟糕。出於這個原因,我們可能只會正式認可每個平臺的幾個webDAV客戶端/庫。

希望有所幫助。