এখানে বেশিরভাগ উত্তরগুলি আদর্শ প্যাটার্নটি ব্যবহার করার পরামর্শ দেয়:
using (var httpClient = new HttpClient())
{
// do something
}
কারণ আইডিস্পোজেবল ইন্টারফেস। দয়া করে না!
মাইক্রোসফ্ট আপনাকে বলে যে:
এবং এখানে আপনি পর্দার আড়ালে কী চলছে তার বিশদ বিশ্লেষণ খুঁজে পেতে পারেন:
https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
আপনার এসএসএল প্রশ্ন সম্পর্কিত এবং https://docs.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/#how-to-fix-the-problem এর উপর ভিত্তি করে
আপনার প্যাটার্নটি এখানে:
class HttpInterface
{
// https://docs.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/#how-to-fix-the-problem
// https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient#remarks
private static readonly HttpClient client;
// static initialize
static HttpInterface()
{
// choose one of these depending on your framework
// HttpClientHandler is an HttpMessageHandler with a common set of properties
var handler = new HttpClientHandler();
{
ServerCertificateCustomValidationCallback = delegate { return true; },
};
// derives from HttpClientHandler but adds properties that generally only are available on full .NET
var handler = new WebRequestHandler()
{
ServerCertificateValidationCallback = delegate { return true; },
ServerCertificateCustomValidationCallback = delegate { return true; },
};
client = new HttpClient(handler);
}
.....
// in your code use the static client to do your stuff
var jsonEncoded = new StringContent(someJsonString, Encoding.UTF8, "application/json");
// here in sync
using (HttpResponseMessage resultMsg = client.PostAsync(someRequestUrl, jsonEncoded).Result)
{
using (HttpContent respContent = resultMsg.Content)
{
return respContent.ReadAsStringAsync().Result;
}
}
}