gpt4 book ai didi

c# - 在 C# 中从 github 下载 zipball

转载 作者:行者123 更新时间:2023-11-30 20:41:37 31 4
gpt4 key购买 nike

需要从 C# 中的给定链接下载一个 zipball

是的!我搜索了网络和 stackoverflow 并试图完成这个看似不可能完成的任务几个小时......

具有讽刺意味的是,在 Curl 中,它是单行的,并且像魅力一样工作..

curl -L https://api.github.com/repos/username/reponame/zipball > repo.zip

我想在 C# 中做与上面 curl 相同的事情...

尝试过 WebClient.DownloadFile()

forbidden (403)

也试过异步方法给

0 bye file (no error/exception)

尝试了 HttpClient Datadownload 和 File stream writer,给出与上面相同的错误。像 streamwirter 这样的接缝根本没有被调用,所以它无法访问服务器,这是我的问题的主要部分

我安装了 Octokit.NET,但它缺少文档,所以我什至不确定从哪里开始做这件事(可能是 WebClient 版本,但我确实在 .NET 库中尝试过)

找到了这个答案但并没有真正理解它 ( Cannot get repository contents as .zip file (zipball) in Octokit.net )

甚至尝试在 C# 中运行 .sh 脚本,但它给了我一个异常(exception),它不能在这个操作系统上运行这种 shell

最佳答案

当我尝试使用 WebClient 时,我没有得到 403,而是一个异常:

System.Net.WebException: The server committed a protocol violation. Section=ResponseStatusLine

查了其他同样错误的问题,发现GitHub API server需要设置user agent。之后,这是微不足道的:

using System;
using System.Net;

class Test
{
static void Main()
{
using (var client = new WebClient())
{
client.Headers.Add("user-agent", "Anything");
client.DownloadFile(
"https://api.github.com/repos/nodatime/nodatime/zipball",
"nodatime.zip");
}
}
}

... 效果很好。我已经为用户存储库而不是组织尝试过它,这也很好。

您绝对不会想对 StreamWriter 做任何事情,因为它用于文本数据 - 而 zip 文件不是文本数据。

您没有显示您对异步版本做了什么 - 我的猜测是您开始下载但没有等到下载完成才处理客户端。

关于c# - 在 C# 中从 github 下载 zipball,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223706/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com