c#httpclient 代理_C# HttpClient 请求认证、数据传输笔记

C# HttpClient 请求认证、数据传输笔记

一,授权认证

客户端请求服务器时,需要通过授权认证许可,方能获取服务器资源,目前比较常见的认证方式有 Basic 、JWT、Cookie。

HttpClient 是 C# 中的 HTTP/HTTPS 客户端,用于发送 HTTP 请求和接收来自通过 URI 确认的资源的 HTTP 响应。下面以具体代码做示范。

1. 基础认证示例

// Basic基础认证

public async Task Basic(string user, string password, string url)

{

// 如果认证页面是 https 的,请参考一下 jwt 认证的 HttpClientHandler

// 创建 client

HttpClient client = new HttpClient();

// 创建身份认证

// using System.Net.Http.Headers;

AuthenticationHeaderValue authentication = new AuthenticationHeaderValue(

"Basic",

Convert.ToBase64String(Encoding.UTF8.GetBytes($"{user}:{password}")

));

client.DefaultRequestHeaders.Authorization = authentication;

byte[] response = await client.GetByteArrayAsync(url);

client.Dispose();

}

可以看到 Basic 认证的安全程度非常低,多用于路由器和嵌入式设备,而且往往不会使用 HTTPS。

2. JWT 认证示例

// Jwt认证

public async Task Bearer(string token, string url)

{

// HttpClientHandler及其派生类使开发人员能够配置各种选项, 包括从代理到身份验证。

// helpLink https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclienthandler?view=netframework-4.8

var httpclientHandler = new HttpClientHandler();

// 如果服务器有 https 证书,但是证书不安全,则需要使用下面语句

// => 也就是说,不校验证书,直接允许

httpclientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true;

using (var httpClient = new HttpClient(httpclientHandler))

{

// 创建身份认证

// System.Net.Http.Headers.AuthenticationHeaderValue;

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

await httpClient.GetAsync(url);

httpClient.Dispose();

}

}

JWT 认证,需要客户端携带 token ,token 是一段加密过的字符串,关于原理这里不多说,token 是通过客户端 header 携带的。

另外,对于测试的 Web 应用或者内网应用, HTTPS 证书可能不是公网国际认证的证书,就需要跳过认证,直接允许访问使用。

var httpclientHandler = new HttpClientHandler()

{

ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true,

};

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值