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);
}
다시 한 번 위의 2 가지 옵션을 사용하면 클라이언트가 명령문을 조금 덜 반복적으로 사용할 수 있다고 생각합니다. http 호출을 여러 번 수행하는 경우 HttpClient를 재사용하는 것이 가장 좋은 방법이지만이 질문의 범위를 벗어난 것으로 생각합니다.