Pour tenter de contourner les ID de fichier/dossier Box et de prendre en charge un certain nombre d'autres services, j'ai décidé d'utiliser WebDAV car je connais un peu Linux. J'ai choisi une librairie basée sur JackRabbit modifiée pour fonctionner sur Android qui semblait convenir à mes besoins. Cependant, il ne fallut pas longtemps avant que je rencontre un problème.PROPFIND Box.com et WebDav (JackRabbit)
Lorsque vous tentez de lister les entrées racine de Box, multiStatus.getResponses() renvoie un tableau vide. Lorsque j'accède à un autre serveur webdav, j'obtiens les réponses comme prévu. Les deux serveurs renvoient le code d'état 207, comme prévu.
Mon code est ci-dessous, des pensées?
EDIT: Je peux déplacer un fichier, bien que la liste des entrées d'un répertoire ne fonctionnera pas:/
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);
}
Obtenez une trace HTTP. –
Je rencontre également des problèmes avec les résultats de la liste de WebDAV de Box.com. J'utilise DAVKit sur iOS, ce qui fonctionne bien avec iDisk et d'autres services, mais Box renvoie un PROPFIND vide, quelle que soit la combinaison de chemin et d'URL que j'ai essayée ... – DaGaMs