首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C# dotnet 编写 curl 的用户名和密码逻辑

C# dotnet 编写 curl 的用户名和密码逻辑

作者头像
林德熙
发布2021-01-21 05:39:32
发布2021-01-21 05:39:32
1.5K0
举报
文章被收录于专栏:林德熙的博客林德熙的博客

在使用 curl 时,可以采用 -u 加上用户名和密码,这个对应在 C# 里面也是两句话的事情。只是在 curl 里面封装好了,我通过工具人协助解决,于是就在这里记录一下

假定使用 curl 输入的是如下代码

代码语言:javascript
复制
curl -ulindexi:FD7doYUzM7WApXobRb7X9qgURCF -T "E:\lindexi\doubi.exe" "https://blog.lindexi.com/artifactory/doubi.exe"

通过上面代码可以给我的存储服务上传文件,而如果使用 dotnet 编写,其实逻辑也十分简单

在账号密码这里,假定有变量 userName 和 key 分别是账号和密码,那么构建上传文件使用的账号密码将放在 Http 的 Header 里面,代码如下

代码语言:javascript
复制
            var encodedAuthString = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{userName}:{key}"));

            httpClient.DefaultRequestHeaders.Add("Authorization", $"Basic {encodedAuthString}");

而上传文件调用的是 Put 接口,整体逻辑如下

代码语言:javascript
复制
            var url = "https://blog.lindexi.com/artifactory/doubi.exeg";
            var file = @"E:\lindexi\doubi.exe";

            var userName = "lindexi";
            var key = "FD7doYUzM7WApXobRb7X9qgURCF";

            var encodedAuthString = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{userName}:{key}"));

            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Authorization", $"Basic {encodedAuthString}");

            await httpClient.PutAsync(url, new StreamContent(File.OpenRead(file)));

看起来代码还是十分简单的,于是我就使用这个方法,在 GitHub 的 Action 上帮忙下载外网的内容,然后发送到我的国内服务器上

感谢工具人 lsj 提供的方法


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/C-dotnet-%E7%BC%96%E5%86%99-curl-%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E5%AF%86%E7%A0%81%E9%80%BB%E8%BE%91.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档