私はHttpClientのシングルトンインスタンスを使用して呼び出しを行っています。私はHttpClientが有効であるかどうかテストする方法があるのだろうかと思っていましたか?新しいインスタンスを作成する必要があるアプリケーションの使用中に、HttpClientのこのインスタンスが悪くなる可能性があります。私のコードは次のとおりです。シングルトンHttpClientの処理
public class HttpClientWrapper : IHttpClientWrapper
{
private Uri _baseAddress;
private int _connectionTimeout;
private HttpClient _httpClientInstance;
private HttpClient HttpClientInstance
{
get
{
if (_httpClientInstance == null)
_httpClientInstance = CreateHttpClient();
return _httpClientInstance;
}
}
public HttpClientWrapper(Uri baseAddress, int connectionTimeout)
{
_baseAddress = baseAddress;
_connectionTimeout = connectionTimeout;
}
public Task<HttpResponseMessage> PostAsJsonAsync<T>(string requestUri, T value)
{
//Test the instance before using it. What should be the test??
return HttpClientInstance.PostAsJsonAsync<T>(requestUri, value);
}
private HttpClient CreateHttpClient()
{
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
HttpClient client = new HttpClient(handler);
client.Timeout = TimeSpan.FromMilliseconds(_connectionTimeout);
client.BaseAddress = _baseAddress;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
}
おかげでマイケルは、私はHttpClientをを再利用しながら、クライアントが使用中壊れて行くと、それを識別するための方法があるん不思議でしたか?言い換えれば、アプリケーションの使用中にアプリケーションで使用されているHttpClientのシングルトンインスタンスを再インスタンス化する理由がありますか? – Barbara
いいえ、 'HttpClient'を再インスタンス化する必要はありません。私が知っている限り、HttpClientはステートレスです。 – Michael