2012-06-25 5 views
8

Кто-нибудь знает, как получить список файлов для конкретной папки SkyDrive? В настоящее время я использую следующий фрагмент кода, чтобы попытаться получить файлы для корневой папки SkyDrive:Получить список файлов из папки SkyDrive (Windows Phone)

var client = new LiveConnectClient(e.Session); 

client.GetCompleted += (obj, arg) => 
    { 
     ... 
    } 

client.GetAsync("me/skydrive"); 

, но все это возвращает словарь, результат, который содержит много информации, но не список имен файлов!

ответ

3

После того, как отчаянный и задать вопрос here

получается, чтобы получить список файлов из корневой папки SkyDrive вам нужно использовать волшебную строку меня/SkyDrive/файлов, а не только у меня, или я/skydrive

0

Ваши файлы находятся непосредственно под «me/skydrive»? В противном случае вам необходимо позвонить ему client.GetAsync("me/skydrive/YOURFOLDER");

Затем вы получите данные в словаре результатов с помощью клавиши data. и вы можете получить его, используя этот кусок кода в completedEvent обработчика:

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

Надеется, что это помогает.

+0

Не работает: я получаю KeyNotFoundException для e.Result [ «данные»] – Calanus

+0

Да, я прошу его в список файлов в корневой папке SkyDrive то есть мне/skydrive – Calanus

+0

вы можете перебирать свой словарь и видеть содержащиеся в нем ключи. – MBen

10

В соответствии с OneDrive core concepts (ранее SkyDrive) у вас есть две возможности для отображения файлов в верхнем каталоге или в определенной папке. Как вы узнали, вы можете перечислить главные файлы, используя

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

и для определенной папки вы используете folderId + "/files", например

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

в GetCompleted случае вы можете получить список всех файлов с ключа данных

private void onFilesInformationDownloaded(object sender, 
              LiveOperationCompletedEventArgs e) { 
    if (e.Result == null) { 
     // check e.Error for reason why it failed 
     return; 
    } 
    List<object> data = (List<object>)e.Result["data"]; 
    foreach (IDictionary<string, object> content in data) { 
     string type = (string)content["type"]; 
     if (type == "folder") { 
      // do something with folders? 
     } 
     string filename = (string)content["name"]; 
     string fileId = (string)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 interested 
    } 
} 
3

Очень плохо, что MS плохо документирует API содержания в реальном времени.

  1. Чтобы получить содержимое папки корня использовать URI: https://apis.live.net/v5.0/me/skydrive/files?access_token= "+ маркер доступа
  2. Для любого другого содержимого папки с помощью URI: https://apis.live.net/v5.0/folder.4ab680998d14f4e7.4AB680998D14F4E7!110/files?access_token=" + маркер доступа

Где folder.4ab680998d14f4e7.4AB680998D14F4E7!110 является целевой папки вы хотите перечислить ,

Java Пример кода:

public void listRootFolder(String accessToken) { 
    String folderId = "folder.4ab680998d14f4e7.4AB680998D14F4E7!110/files"; 
    String 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.getResponseBodyAsString()); 
    } catch (HttpException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

Вы должны отформатировать ваш код. Теперь он не читается. – kazanaki

Смежные вопросы