如何使用API和C#将文件从天蓝色DevOps服务器下载到指定路径

萨加尔科技

我正在尝试使用API​​从azure devops服务器下载文件.API给出成功响应。但是没有文件被下载。如果我们删除format参数,我们将获得文件链接的响应。单击该文件不会得到下载。

样例代码

var personalaccesstoken = "ic2pqkzaeqv2dummyTokenDummypa";
                client1.BaseAddress = new Uri("https://dev.azure.com/organisatioTest/ProjectABC");
                client1.DefaultRequestHeaders.Accept.Clear();
                client1.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client1.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                   Convert.ToBase64String(
                       System.Text.ASCIIEncoding.ASCII.GetBytes(
                           string.Format("{0}:{1}", "", personalaccesstoken))));
                HttpResponseMessage response1 = client1.GetAsync("_apis/git/repositories/e9e2f082-6f6d-99999b0bcc737a/items?scopePath=/Vjjj/DB/Data/ABC.sql&download=true&$format=zip&api-version=5.1").Result;

是否应该添加其他C#代码来下载文件?我们如何指定下载路径?

刘维托

在C#中,可以这样构造URL(假定变量是通过方法调用传递的):

    var url = $" https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&api-version=5.1";

使用正确格式的URL,然后我们可以使用WebRequest类来调用API。例如:

var request = (HttpWebRequest)WebRequest.Create(address);
request.UserAgent = "VSTS-Get";
request.Headers.Set(HttpRequestHeader.Authorization, GetAuthenticationHeaderValue(authentication).ToString());
request.ContentType = "application/json";
request.Method = httpMethod;
response = (HttpWebResponse)request.GetResponse();

使用HttpWebResponse对象,我们可以获得一个Stream对象,然后可以将其用于将API结果写到本地文件中。例如:

using (var responseStream = GetResponseStream(response))
{     var fileName = Path.Get Filename(fileToDownload ?? "");     using (var fileStream = File.Create(Path.Combine(destination, fileName)))     {         responseStream.CopyTo(fileStream);     }
}

请参考此链接以获取更多详细信息:获取文件API示例博客

更新1

感谢sagar的共享,有关更多详细信息,请参阅从azure devops服务器下载文件将错误的数据写入文件

我们应该尝试使用个人访问令牌(PAT)。为了使用PAT进行身份验证,我们必须将授权用作“基本”而不是“承载者”。此外,除了将PAT单独添加到Request标头之外,我们还必须使用组合用户名和PAT的名称。说用户名:PAT的base-64编码字符串。

样例代码:

var personalaccesstoken = "wwwwwwwwwwwwwwwwwwy47b7ugkz32bubi64bw7fqdyfpa";
 var base64Creds = Convert.ToBase64String(Encoding.ASCII.GetBytes("[email protected]:"+ personalaccesstoken));
request.Headers.Set(HttpRequestHeader.Authorization, "Basic " + base64Creds);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C# 如何将文件从 URL 下载到服务器文件夹

天蓝色的内部服务器错误-OwinHttpModule

如何使用天蓝色函数在天蓝色斑点存储中编辑* .csv文件?

如何使用prependpath在天蓝色管道中设置路径

将文件下载到服务器?

使用SSH将文件从Internet下载到服务器

从服务器将文件下载到客户端-jquerymobile / html5 / c#

将文件从C#的FTP服务器下载到修改日期大于指定日期的本地文件夹

如何使用Paramiko getfo将文件从SFTP服务器下载到内存以进行处理

在使用Push API将文件上传到天蓝色devops中时,对象“”不存在。” 得到显示“ typeName”:“ Microsoft.TeamFoundation.Git

使用python自动执行ssh'到服务器和将文件下载到特定文件夹的过程

使用Web API和javascript将Excel文件从服务器下载到asp.net中的本地计算机

无法在天蓝色接收中创建mobil上游服务器报告未找到资源

天蓝色内部服务器错误上的spring boot

如何提高通过流下载大尺寸天蓝色blob文件的性能?

从URL将文件下载到服务器

从URL将文件下载到tomcat服务器

如何将天蓝色链接的VSTS / DevOps移动到另一个帐户/天蓝色订阅

如何在天蓝色的Devops中安装Cobertura?

如何在带有变量组的天蓝色DevOps yaml管道的变量中使用IF ELSE?

TFS API:如何使用C#从服务器路径获取本地映射路径?

如何使用天蓝色的手臂模板创建天蓝色的webjob?

如何在服务结构(天蓝色)中注册侦听器

如何设定最高 天蓝色媒体服务定位器上的ExpirationDate TimeSpan?

如何将文件从FTP服务器下载到Android设备?

使用php将youtubevideos下载到服务器

如何从天蓝色服务总线上读取消息

如何获取天蓝色认知语音服务的凭据

如何防止天蓝色的开发人员将信息和警告视为错误?