Windows 스토어 앱 프로젝트에서 Apiary.io와 다른 동료가 만든 API를 구현하고 있습니다.
그들은 내가 구현 해야하는이 방법의 예를 보여줍니다.
var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/");
using (var httpClient = new HttpClient{ BaseAddress = baseAddress })
{
using (var response = await httpClient.GetAsync("user/list{?organizationId}"))
{
string responseData = await response.Content.ReadAsStringAsync();
}
}
이 방법과 다른 방법에서는 이전에 얻은 토큰이있는 헤더가 필요합니다.
다음은 내가 말하고있는 헤더가있는 Postman (크롬 확장) 이미지입니다.
해당 Authorization 헤더를 요청에 어떻게 추가합니까?
답변
HttpClient와 함께 GetAsync를 사용할 때 다음과 같이 인증 헤더를 추가 할 수 있습니다.
httpClient.DefaultRequestHeaders.Authorization
= new AuthenticationHeaderValue("Bearer", "Your Oauth token");
이것은 HttpClient의 수명 동안 인증 헤더를 추가하므로 인증 헤더가 변경되지 않는 한 사이트를 방문하는 경우 유용합니다.
자세한 답변 은 다음과 같습니다.
답변
나중에 대답하지만 아무도이 솔루션을 제공하지 않았기 때문에 …
당신이에 헤더 설정하지 않으려면 HttpClient
받는 사람에 추가하여 인스턴스를 DefaultRequestHeaders
, 당신은 요청에 따라 헤더를 설정할 수 있습니다 .
그러나이 SendAsync()
방법 을 사용해야합니다 .
이 방법 을 재사용하려는 경우HttpClient
올바른 솔루션 입니다.
- 성능 및 포트 소모 문제
- 스레드로부터 안전한 작업 수행
- 매번 같은 헤더를 보내지 않음
다음과 같이 사용하십시오.
using (var requestMessage =
new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"))
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", your_token);
httpClient.SendAsync(requestMessage);
}
답변
수락 된 답변은 효과가 있지만 수락 헤더를 추가하려고하면 복잡해질 수 있습니다. 이것이 내가 끝낸 것입니다. 그것은 나에게 더 단순 해 보이므로 앞으로 그것을 고수 할 것이라고 생각합니다.
client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring);
답변
답변
greenhoorn의 답변에 따라 다음과 같이 “확장”을 사용할 수 있습니다.
public static class HttpClientExtensions
{
public static HttpClient AddTokenToHeader(this HttpClient cl, string token)
{
//int timeoutSec = 90;
//cl.Timeout = new TimeSpan(0, 0, timeoutSec);
string contentType = "application/json";
cl.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
cl.DefaultRequestHeaders.Add("Authorization", String.Format("Bearer {0}", token));
var userAgent = "d-fens HttpClient";
cl.DefaultRequestHeaders.Add("User-Agent", userAgent);
return cl;
}
}
그리고 사용하십시오 :
string _tokenUpdated = "TOKEN";
HttpClient _client;
_client.AddTokenToHeader(_tokenUpdated).GetAsync("/api/values")
답변
때로는이 코드 만 필요합니다.
httpClient.DefaultRequestHeaders.Add("token", token);