有谁知道如何获得的文件列表特定SkyDrive文件夹? 目前我使用下面的代码片断,试图让根SkyDrive文件夹中的文件:
var client = new LiveConnectClient(e.Session);
client.GetCompleted += (obj, arg) =>
{
...
}
client.GetAsync("me/skydrive");
但所有的返回是一个包含大量的信息,但没有文件名列表的结果字典!
有谁知道如何获得的文件列表特定SkyDrive文件夹? 目前我使用下面的代码片断,试图让根SkyDrive文件夹中的文件:
var client = new LiveConnectClient(e.Session);
client.GetCompleted += (obj, arg) =>
{
...
}
client.GetAsync("me/skydrive");
但所有的返回是一个包含大量的信息,但没有文件名列表的结果字典!
据OneDrive核心概念 (以前的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
}
}
越来越绝望和提出的问题后, 在这里
原来的从根SkyDrive文件夹中获取文件的列表中,您需要使用魔法字符串我/的SkyDrive /文件,而不是只有我或我/的SkyDrive
这实在是糟糕,MS不会记录以及实时内容的API。
凡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();
}
}
是你的文件直接在“我/ 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
}
希望这可以帮助。