2015-06-25 5 views
2


Я пытаюсь использовать oneDrive REST API для получения файлов в определенной папке. У меня есть путь к папке (например, «myApp/filesToDownload /», но у меня нет идентификатора OneDrive для папки. Есть ли способ получить идентификатор папки или файлы в папке с помощью REST API?OneDrive REST API получить файлы без folderID

Единственный способ, с помощью которого я могу получить его, - это использовать https://apis.live.net/v5.0/me/skydrive/files?access_token=ACCESS_TOKEN , чтобы получить список папок в корне, а затем разбить строку пути на «/» и на ней зациклиться, каждый раз выполняя запрос GET https://apis.live.net/v5.0/CURRENT_FOLDER/files?access_token=ACCESS_TOKEN для каждой иерархии .. Я предпочел бы, чтобы не делать все эти запросы, потому что путь может быть довольно долго ..

есть ли лучше/простой способ получения файлов из определенной папки?

Thanks

+1

API OneDrive (api.onedrive.com) поддерживает маршрутную адресацию. Подробнее см. Https://dev.onedrive.com/misc/addressing.htm. Редактирование: в зависимости от вашего сценария вы можете захотеть просмотреть специальные папки - в частности специальную папку подходящего типа, которая задокументирована на странице https://dev.onedrive.com/misc/appfolder.htm – Joel

ответ

0

Как указал Джоэл, API-интерфейс Onedrive поддерживает также основанную на трассировке адресацию (в дополнение к адресации на основе ID). Поэтому вам не нужен идентификатор папки. Вы можете использовать Onedrive API (api.onedrive.com) для получения файлов/папок в определенной папке следующим образом:

 String path = "path/to/your/folder"; // no '/' in the end 
     HttpClient httpClient = new DefaultHttpClient(); 

     // Forming the request 
     HttpGet httpGet = new HttpGet("https://api.onedrive.com/v1.0/drive/root:/" + path + ":/?expand=children"); 
     httpGet.addHeader("Authorization", "Bearer " + ACCESS_TOKEN); 

     // Executing the request 
     HttpResponse response = httpClient.execute(httpGet); 

     // Handling the response 
     BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
     StringBuilder builder = new StringBuilder(); 
     for (String line = null; (line = reader.readLine()) != null;) { 
      builder.append(line).append("\n"); 
     } 

     JSONTokener tokener = new JSONTokener(builder.toString()); 
     JSONObject finalResult = new JSONObject(tokener); 

     JSONArray fileList = null; 
     try{ 
      fileList = finalResult.getJSONArray("children"); 

      for (int i = 0; i < fileList.length(); i++) { 
       JSONObject element = (JSONObject) fileList.get(i); 

       // do something with element 
       // Each element is a file/folder in the form of JSONObject 
      } 
     } catch (JSONException e){ 
      // do something with the exception 
     } 

Для получения более подробной информации см here.

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