如何发送带有 HttpRequestMessage 的证书?
Posted
技术标签:
【中文标题】如何发送带有 HttpRequestMessage 的证书?【英文标题】:How do you send a certificate with an HttpRequestMessage? 【发布时间】:2016-06-10 14:33:56 【问题描述】:这里我有一个 HttpRequestMessage,我正在尝试向它添加一个客户端证书,但似乎找不到如何执行此操作。有没有人做过这样的事情?
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "myapi/?myParm=" + aParm);
//Want to add a certificate to request - a .p12 file in my project
myAPIResponse res = await SendAndReadAsAsync<myAPIResponse>(request, aCancelToken);
【问题讨论】:
你看到了吗? ***.com/questions/22251689/… 是的,这个似乎是用 HttpClient 发送的...我希望看看是否可以用 HttpRequestMessage 发送它 【参考方案1】:这是一个结合 HttpClient 和 HttpRequestMessage 的答案。
保存数据的 HttpRequestMessage 和处理数据发送方式的客户端。
WebRequestHandler handler = new WebRequestHandler();
X509Certificate certificate = GetMyX509Certificate();
handler.ClientCertificates.Add(certificate);
HttpClient client = new HttpClient(handler);
var request = new HttpRequestMessage (HttpMethod.Get, "myapi/?myParm=" + aParm);
HttpResponseMessage response = await client.SendAsync (request);
response.EnsureSuccessStatusCode();
编辑:这里有一个链接解释了 WebRequestHandler、HttpClientHandler 和 HttpClient 之间的区别,以了解你应该在什么时候使用:https://docs.microsoft.com/en-us/archive/blogs/henrikn/httpclient-httpclienthandler-and-webrequesthandler-explained
【讨论】:
谢谢 :) 我会试试看的! 现在是 HttpClientHandler @irhetoric 但是,您不能将证书添加到 HttpClientHandler。以上是关于如何发送带有 HttpRequestMessage 的证书?的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 字符串加载到 HttpRequestMessage
c# 如何正确传递 HttpRequestMessage 并在函数外返回 HttpRequestMessage 而不会泄漏
HttpRequestMessage 的 Content-Type 标头中的奇怪行为