繁体   English   中英

REST API 未从 AZURE git 分支下载文件

[英]REST API is not downloading file from AZURE git branch

我是 C# 的新手,正在尝试从 azure git 存储库下载文件。 响应状态为成功但未将文件下载到本地驱动器。 我正确地传递了所有参数。

 using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
    Convert.ToBase64String(
    System.Text.ASCIIEncoding.ASCII.GetBytes(
    string.Format("{0}:{1}", "", personalaccesstoken))));

    using (HttpResponseMessage response = client.GetAsync(
        $"https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&download={download}&versionDescriptor.versionType={versionDescriptor_versionType}&versionDescriptor.version={versionDescriptor_version}&api-version=7.0").Result)
        {
            response.EnsureSuccessStatusCode();
             var responseBody = await response.Content.ReadAsStringAsync();

            Console.WriteLine(responseBody);

        }
}

和我得到的 output 如下。

{
  "objectId": "34e9cd84219e51533b19b3a70121e73b612c0eca",
  "gitObjectType": "blob",
  "commitId": "1916fd237ce345505a0cdbb285ce0ba71a64691b",
  "path": "/Backend/DATA/Document_AA083_A100001.xml",
  "url": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5/items?path=%2FBackend%2FDATA%2FDocument_AA083_A100001.xml&versionType=Branch&version=tcs00107%2FGIT_Tool&versionOptions=None",
  "_links": {
    "self": {
      "href": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5/items?path=%2FBackend%2FDATA%2FDocument_AA083_A100001.xml&versionType=Branch&version=tcs00107%2FGIT_Tool&versionOptions=None"
    },
    "repository": {
      "href": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5"
    },
    "blob": {
      "href": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5/blobs/34e9cd84219e51533b19b3a70121e73b612c0eca"
    }
  }
}

如果有人可以帮助我解决这个问题,那将非常有帮助。 非常感谢您的帮助。

问题是您收到的 JSON 响应包含有关文件的元数据。 您必须使用“url”并使用“HttpClient.GetByteArrayAsync()”执行另一个获取请求。 这会将文件作为字节数组获取,然后可以使用“File.WriteAllBytes(string, byte[])”将其写入本地驱动器。

using (HttpClient client = new HttpClient())
{
    //.. your existing code 
    var responseBody = await response.Content.ReadAsStringAsync();
    dynamic jsonData = JsonConvert.DeserializeObject(responseBody);
    var blobUrl = jsonData._links.blob.href;
    byte[] fileBytes = await client.GetByteArrayAsync(blobUrl);
    File.WriteAllBytes("path/to/local/file", fileBytes);
}

将路径更改为您希望保存文件的位置,并注意文件路径的任何权限/限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM