Wdrażam interfejs API stworzony przez innych współpracowników z Apiary.io w projekcie aplikacji Windows Store.
Pokazują przykład metody, którą muszę zaimplementować:
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();
}
}
W tej i kilku innych metodach potrzebuję nagłówka z tokenem, który otrzymałem wcześniej.
Oto obraz Postman (rozszerzenie do Chrome) z nagłówkiem, o którym mówię:
Jak dodać ten nagłówek autoryzacji do żądania?
Odpowiedzi:
Korzystając z GetAsync z HttpClient, możesz dodać nagłówki autoryzacji w następujący sposób:
Spowoduje to dodanie nagłówka autoryzacji przez cały okres istnienia HttpClient, więc jest przydatny, jeśli trafisz na jedną witrynę, w której nagłówek autoryzacji nie ulega zmianie.
Oto szczegółowa odpowiedź SO
źródło
Później odpowiedź, ale ponieważ nikt nie dał takiego rozwiązania ...
Jeśli nie chcesz ustawiać nagłówka w
HttpClient
instancji, dodając go do plikuDefaultRequestHeaders
, możesz ustawić nagłówki na żądanie .Ale będziesz musiał użyć tej
SendAsync()
metody.To właściwe rozwiązanie, jeśli chcesz ponownie użyć
HttpClient
- co jest dobrą praktykąUżyj tego w ten sposób:
źródło
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token);
„Bearer” to nieprawidłowy nagłówek HTTPusing
ale możesz utworzyć wystąpienie w konstruktorze i usunąć wDispose()
using
na HttpClient (to jest złe), powiedziałem na HttpRequesMessage (ponieważ ma niezarządzane bufory pamięci do przesyłania strumieniowego, które MUSZĄ zostać usunięte po użyciu). Żądanie i odpowiedź są i muszą być usuwane z każdym żądaniem (w przeciwnym razie duże fragmenty pamięci będą blokowane przez długi czas). WHttpClient
znacznym stopniu nadaje się do wielokrotnego użytku.Zaakceptowana odpowiedź działa, ale może się skomplikować, gdy chciałem spróbować dodać nagłówki Akceptuj. Na tym skończyłem. Wydaje mi się to prostsze, więc myślę, że pozostanę przy tym w przyszłości:
źródło
Możesz dodać potrzebne nagłówki do pliku
HttpClient
.Oto fajny tutorial na ten temat.
Dotyczy to nie tylko żądań POST, ale także żądań GET.
źródło
Idąc za odpowiedzią greenhoorna, możesz użyć „Rozszerzeń” w następujący sposób:
I użyć:
źródło
Czasami potrzebujesz tylko tego kodu.
źródło