Obtenir la liste des fichiers du dossier SkyDrive (Windows Phone)

Est-ce que quelqu’un sait comment obtenir une liste de fichiers pour un dossier SkyDrive particulier? Actuellement, j’utilise l’extrait de code suivant pour essayer d’obtenir les fichiers du dossier racine SkyDrive:

var client = new LiveConnectClient(e.Session); client.GetCompleted += (obj, arg) => { ... } client.GetAsync("me/skydrive"); 

mais tout ce qu’il retourne, c’est un dictionnaire de résultats contenant de nombreuses informations, mais aucune liste de noms de fichiers!

Selon les concepts de base de OneDrive (anciennement SkyDrive), vous disposez de deux options pour répertorier les fichiers, dans le répertoire principal ou dans un dossier spécifique. Comme vous l’avez découvert, vous pouvez répertorier les principaux fichiers à l’aide de

 liveClient.GetAsync("me/skydrive/files"); 

et pour un dossier spécifique, vous utilisez folderId + "/files" , par exemple

 liveClient.GetAsync(folder.Id + "/files"); 

dans l’événement GetCompleted , vous pouvez répertorier tous les fichiers de la clé de données

 private void onFilesInformationDownloaded(object sender, LiveOperationCompletedEventArgs e) { if (e.Result == null) { // check e.Error for reason why it failed return; } List data = (List)e.Result["data"]; foreach (IDictionary content in data) { ssortingng type = (ssortingng)content["type"]; if (type == "folder") { // do something with folders? } ssortingng filename = (ssortingng)content["name"]; ssortingng fileId = (ssortingng)content["id"]; // use fileId to download a file or list files in a folder // there's a few more details available in content.Keys // such as created_time and updated_time for those interestd } } 

Après avoir désespéré et posé la question ici

il s’avère que pour obtenir une liste des fichiers du dossier racine de skydrive, vous devez utiliser la chaîne magique me / skydrive / files plutôt que juste moi ou moi / skydrive.

C’est vraiment dommage que MS ne documente pas bien l’API de contenu live.

  1. Pour obtenir le contenu du dossier racine, utilisez l’URI: https://apis.live.net/v5.0/me/skydrive/files?access_token= “+ accessToken
  2. Pour tout autre contenu de dossier, utilisez l’URI: https://apis.live.net/v5.0/folder.4ab680998d14f4e7.4AB680998D14F4E7!110/files?access_token= “+ accessToken

folder.4ab680998d14f4e7.4AB680998D14F4E7!110 est le dossier cible que vous souhaitez répertorier.

Exemple de code Java:

 public void listRootFolder(Ssortingng accessToken) { Ssortingng folderId = "folder.4ab680998d14f4e7.4AB680998D14F4E7!110/files"; Ssortingng url = "https://apis.live.net/v5.0/" + folderId + "?access_token=" + accessToken; HttpMethod method = new GetMethod(url); HttpClient client = new HttpClient(); try { int returnCode = client.executeMethod(method); System.out.println("Return code " + returnCode); System.out.println(method.getResponseBodyAsSsortingng()); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

Vos fichiers sont-ils directement sous “moi / skydrive”? Sinon, vous devez l’appeler avec client.GetAsync("me/skydrive/YOURFOLDER");

Ensuite, vous écrivez votre sortie dans un dictionnaire de résultats avec les data clés. et vous pouvez le récupérer en utilisant cette partie de code dans votre gestionnaire completedEvent:

  var data = (List)e.Result["data"]; foreach (IDictionary content in data) { var skyContent = new SkyDriveContent(); skyContent.Name = (ssortingng)content["name"]; ContentList.Add(skyContent); // where ContentList is : List ContentList = new List(); in your class } 

J’espère que cela t’aides.