【发布时间】:2018-09-06 23:42:05
【问题描述】:
我正在浏览应该通过 SSL 进行 api 调用的现有代码。我很难理解,以下代码如何工作?我的意思是这段代码有效,但我无法理解内部工作。特别是两个**标记之间的代码。
这里如何使用证书?我的意思是什么目的证书在这里服务?我已经运行了代码,我看到 GetCertificate 从计算机商店返回一个证书。
public class Helper
{
public static T Post<T>(string resourceUri, object request)
{
**ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var requestHandler = new WebRequestHandler();
requestHandler.ServerCertificateValidationCallback = delegate { return true; };
requestHandler.ClientCertificates.Add(GetCertificate());
using (var client = new HttpClient(requestHandler))
{**
client.BaseAddress = new Uri(resourceUri);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var responseMessage = client.PostAsJsonAsync(resourceUri, request).Result;
if (responseMessage.IsSuccessStatusCode)
return responseMessage.Content.ReadAsAsync<T>().Result;
else
throw new Exception(responseMessage.Content.ReadAsStringAsync().Result);
}
catch(Exception ex)
{
// do something
return default(T);
}
}
}
【问题讨论】:
-
客户端证书用于双向 SSL,google 有大量搜索结果
标签: c# ssl asp.net-web-api