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

时间:2018-07-13 15:19:22

标签: c# rest 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调用,它确实会按预期返回数据。

1 个答案:

答案 0 :(得分:1)

客户端证书在HttpClientHandler上指定。 HttpClient的默认ctor将为您创建处理程序。在这种情况下,您需要指定它。

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