【发布时间】:2018-01-18 10:56:51
【问题描述】:
我有一个连接到 Web API 的类,因此我正在像这样在类的顶部初始化一个静态 HTTPClient
private static readonly HttpClient httpClient = new HttpClient();
https://docs.microsoft.com/enus/azure/architecture/antipatterns/improper-instantiation/
这个HTTPClient被类内的所有公共方法用来联系API,除了login()之外的每个方法都需要一个基本的认证头,这个头应该是这样的:
授权:基本 device_id:X-Secret-Key
其中 device_id 是该类实例的常量,密钥是 login() 方法的返回值。
因此每个方法都应该包含:
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo)));
其中 request 是正在创建的 HTTPRequestMessage,authInfo 是格式为 device_id:X-Secret-Key 的字符串。
或者每个方法都应该调用与 Login() 函数使用的 HTTPClient 不同的 HTTPClient,声明如下:
var handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential (device_id, secret_key);
var client = new HttpClient (handler);
感谢您的回复
【问题讨论】:
标签: c# http-headers httpclient