我正在使用SharePoint的REST API来查询企业用户的Office 365 SharePoint站点内托管的文件。
我已使用OAuth对用户进行身份验证并对应用进行授权,如下所述:http://msdn.microsoft.com/en-us/library/azure/dn645542.aspx
我能够使用GET请求成功查询API: https://XXXXXXX.sharepoint.com/sites/xxxxx/xxxxx/myfoldername/_api/files (请求作为授权标头设置为'Bearer',正如您所期望的那样。)
上面的查询给出了以下JSON结果:
{
"odata.metadata" = "https://xxxxxxxxx.sharepoint.com/sites/xxxxxxxxx/xxxxxxxxx/myfoldername/_api/$metadata#SP.ApiData.Files";
value = (
{
CreatedBy = {
Id = 1;
Name = “Test”;
Puid = xxxxx;
};
ETag = “\”{hsdglksjfldkasnfldasknk},4\””;
Id = JKLBbiuuu908yYHhh89YBn9n9ynynYUN;
LastModifiedBy = {
Id = 1;
Name = “XXXXX”;
Puid = XXXXXXXXXXX;
};
Name = "videofile.wmv";
Size = 56492358;
TimeCreated = "2013-09-23T05:16:44Z";
TimeLastModified = "2013-09-23T05:28:42Z";
Url = "https://xxxxxxxxx.sharepoint.com/sites/xxxxxxxxx/xxxxxxxxx/myfoldername/Shared Documents/videofile.wmv";
"odata.editLink" = "Web/Lists(guid’9568472598-2c28-489BF2-a1ae-kfjdasfkjb)/files(‘jkbvasdjfbakfndasnMNBBAMnsaldfan)”;
"odata.id" = "https://xxxxxxxxx.sharepoint.com/sites/xxxxxxxxx/xxxxxxxxx/myfoldername/_api/Web/Lists(guid’987795-gfkjhghs-ty42398yhfo’)/files('jkbvasdjfbakfndasnMNBBAMnsaldfan')";
"odata.type" = "MS.FileServices.File";
})
}
(请记住上面的内容实际上不是JSON,而是来自JSON解析器的文本输出)
在上面的结果中,我在value
部分中获得了一组文件。为了便于说明,我已将此数组缩减为一个项目。
您会看到每个项目代表一个文件的元数据。有一个叫Url
的房产;然后我用它来尝试下载文件。我创建了一个HTTP请求,并在Bearer <access_token>
附加了Authorization标头,但是,响应总是HTTP 401 UNAUTHORIZED
。
请注意:我正在编写的软件实际上是在使用AFNetworking 2 AFHTTPRequestOperationManager
的Objective-C中。
有谁知道我怎样才能真正下载文件?我在文档中看到了一些名为'contentUrl'的属性的引用,但是没有提供此属性。
感谢 克里斯
答案 0 :(得分:1)
您使用的是API的v1吗?从您的终端看来,您似乎正在使用预览版(v1已在2周前发布;我们的文档页面上可能仍有过时的参考文献,如果您遇到任何内容,请告知我们)
示例:
GET https:// {tenant} .sharepoint.com / {site-path} /_api/v1.0/Files/ {file-id} / content
这是文档部分的网址,向您展示如何下载文件:http://msdn.microsoft.com/en-us/office/office365/api/files-rest-operations#FileresourceDownloadafile
如果您有任何其他问题,请与我们联系。