使用REST Call

时间:2016-06-16 10:30:01

标签: java rest sharepoint office365 sharepoint-online

我正在尝试使用Java中的REST API下载文件的主要版本和次要版本。我只能下载特定文件的最新版本,当我尝试下载该文件的其他版本时,我收到500内部服务器错误。

获取文件版本的URL会正确返回文件的所有版本。当我尝试获取不同版本的内容时,我得到500内部服务器错误。

我用来获取文件的不同版本的URL是

  

“的 _api /网络/ GetFileByServerRelativeUrl( '%s' 的)/版本”。

我用来获取文件内容的网址是

  

“的 _api /网络/ GetFileByServerRelativeUrl( '%s' 的)/ $值”。

该文件的最新版本的URL语法是

  

“HTTPS:// tenant_name .sharepoint.com / FOLDER_NAME / FILE_NAME ”。

该文件版本的URL语法是

  

“HTTPS:// tenant_name .sharepoint.com / _vti_history / VERSION_ID / FOLDER_NAME / FILE_NAME ”。

后一种语法(即文件版本的URL语法)有问题吗?

任何人都可以帮帮我。

2 个答案:

答案 0 :(得分:0)

似乎支持在端点/_api/web/GetFileByServerRelativeUrl中为文件版本指定url,因为它除了实际文件的服务器相对URL。

由于提供的文件版本的URL没有任何问题,您可以考虑采用不同的方法来下载它。不要将REST端点用于文件内容/_api/web/GetFileByServerRelativeUrl('%s')/$value,而是考虑使用绝对 url下载文件,如下例所示:

C#示例

using (var client = new HttpClient())
{
    var targetPath = @"c:\downloads";
    var sourceFileUrl = String.Format("{0}/_vti_history/512/Documents/SharePoint User Guide.docx",webUri);
    var response = client.GetAsync(sourceFileUrl).Result;

    var targetFileName = targetPath + System.IO.Path.GetFileName(sourceFileUrl);
    System.IO.File.WriteAllBytes(targetFileName, response.Content.ReadAsByteArrayAsync().Result);

}

答案 1 :(得分:0)

网址应为:

https://sharepoint-site.com/sites/Subsite/_vti_history/version_id/Documents/SharePoint User Guide.docx