【发布时间】:2020-03-19 20:19:12
【问题描述】:
我正在使用 HttpClient 向 Soap Api 发出请求。 我看到建议为每个请求使用一次 HttpClient 的单个实例,以避免 SocketException。
在我的桌面应用程序中,我需要发出多个请求,每个请求都有不同的凭据。我这样做就像示例代码一样:
WebRequestHandler requestHandler = new WebRequestHandler();
requestHandler.ClientCertificates.Add(certificate);
using(var client = new HttpClient(requestHandler))
{
try
{
HttpResponseMessage response = await client.PostAsync("https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx", httpContent);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
catch (HttpRequestException e)
{
return e.Message;
}
}
但是,我想避免为每个请求创建一个 HttpClient 实例。我看到正确的方法是使用这样的静态实例:
static readonly HttpClient client = new HttpClient();
但是对于静态实例,我无法使用 WebRequestHandler 设置凭据。请注意,每个请求中的凭据都会发生变化。
执行所有请求、避免 SocketException 和使用不同凭据的更好方法是什么?
【问题讨论】:
标签: c# httpclient x509certificate credentials socketexception