আমি TheWhiteRabbit এর জবাবের সাথে একমত, তবে আপনার যদি HttpClient ব্যবহার করে প্রচুর কল হয় তবে কোডটি আমার মতে কিছুটা পুনরাবৃত্তি বলে মনে হচ্ছে।
আমি মনে করি উত্তরটি কিছুটা উন্নত করার জন্য দুটি উপায় আছে।
ক্লায়েন্ট তৈরি করতে একটি সহায়ক শ্রেণি তৈরি করুন:
public static class ClientHelper
{
// Basic auth
public static HttpClient GetClient(string username,string password)
{
var authValue = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")));
var client = new HttpClient(){
DefaultRequestHeaders = { Authorization = authValue}
//Set some other client defaults like timeout / BaseAddress
};
return client;
}
// Auth with bearer token
public static HttpClient GetClient(string token)
{
var authValue = new AuthenticationHeaderValue("Bearer", token);
var client = new HttpClient(){
DefaultRequestHeaders = { Authorization = authValue}
//Set some other client defaults like timeout / BaseAddress
};
return client;
}
}
ব্যবহার:
using(var client = ClientHelper.GetClient(username,password))
{
//Perform some http call
}
using(var client = ClientHelper.GetClient(token))
{
//Perform some http call
}
একটি এক্সটেনশন পদ্ধতি তৈরি করুন:
কোনও সৌন্দর্য পুরষ্কার জিততে পারে না তবে দুর্দান্ত কাজ করে :)
public static class HttpClientExtentions
{
public static AuthenticationHeaderValue ToAuthHeaderValue(this string username, string password)
{
return new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.Encoding.ASCII.GetBytes(
$"{username}:{password}")));
}
}
ব্যবহার:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = _username.ToAuthHeaderValue(_password);
}
আবার আমি মনে করি উপরের দুটি বিকল্পগুলি ক্লায়েন্টকে বিবৃতিটি কিছুটা কম পুনরাবৃত্তি করে তোলে। মনে রাখবেন যে আপনি যদি একাধিক এইচপি কল করে থাকেন তবে এইচটিপসিপ্লিয়েন্টটি পুনরায় ব্যবহার করা ভাল অনুশীলন তবে আমি মনে করি এটি এই প্রশ্নের সুযোগের বাইরে কিছুটা নয়।