我想在 C# 应用程序中下载发布资产 zipball 以供进一步使用。我正在使用 Octokit 从 repo 中获取所有发布信息,包括相应的 browserdownload_url。
经过一些研究,在我看来,您无法通过 octokit 下载此发布资产 zip,因此请按照一些 SO 帖子的建议尝试使用 httpclient,这些帖子正在询问这些问题。
发布 zip 位于 Github Enterprise Repository 上,因此它们需要身份验证。这可能是我的问题,我无法使用 httpClient 进行身份验证...
该请求始终以代码 404 响应(如果您尝试将 url 放入常规浏览器而不登录,这是常规行为)
我的实际实现是这样的
public void DownloadRelease(string dlUrl, string targetPath)
{
var githubToken = "aaaaaaaaaaabbbbbbbbbcccccccccdddddddddd"; //Token created in the github developer settings with all available rights
//dlUrl = https://github.server.de/organization/project/releases/download/v1.2.34/release.zip
using (var client = new System.Net.Http.HttpClient())
{
var credentials = string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}:", githubToken);
credentials = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(credentials));
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials);
//client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", githubToken);
var contents = client.GetByteArrayAsync(dlUrl).Result;
System.IO.File.WriteAllBytes(targetPath, contents);
}
}
更新:最后我们遵循了使用 curl 方式的方式: https ://docs.github.com/en/enterprise-server@3.0/rest/reference/repos#download-a-repository-archive-zip
我又犯了一个错误:有些版本没有可下载的资产 ID,我在代码中没有发现。