내 전화를 걸기 위해 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