繁体   English   中英

C#调用REST服务调用并提供证书

[英]C# calling REST service call and providing a certificate

大家好 - 在 C# 中调用 REST Web 服务时,在弄清楚如何传递证书时遇到了一些麻烦。 我一直在查看各种代码片段,但似乎无法弄清楚我需要做什么。 下面是我的应用程序中的一些代码,它在没有证书的情况下调用 REST 服务,效果很好。 我假设有一些命令可以将证书添加到代码中,我必须允许它工作,但这就是我被卡住的地方。 如果需要证书,我不确定我是否应该以不同的方式调用该服务。 我想我需要查看证书存储并通过指纹搜索它并将其添加到 HttpClient。

我也在 .Net 4.5 上。

        string URL = "https://RESTSvcURL/function";
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(URL);
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage response = client.GetAsync(urlParameters).Result; 

        if (response.IsSuccessStatusCode)
            tbOutput.Text = response.Content.ReadAsStringAsync().Result;
        else
            tbOutput.Text = "Error: " + response.StatusCode + " " + response.ReasonPhrase;

我还要说我确实创建并安装了一个有效的证书。 我可以通过在浏览器中拉出 URL 并提供证书来手动调用 REST 调用,它确实按预期返回数据。

客户端证书在 HttpClientHandler 上指定。 HttpClient 的默认构造函数将为您制作一个处理程序。 在这种情况下,您需要指定它。

HttpClientHandler handler = new HttpClientHandler();
handler.ClientCertificates.Add(clientCert);
HttpClient client = new HttpClient(handler);
// continue with the rest of your code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM