Mam HttpClient, którego używam dla interfejsu API REST. Mam jednak problem z ustawieniem nagłówka autoryzacji. Muszę ustawić nagłówek na token, który otrzymałem od wykonania mojego żądania OAuth. Widziałem trochę kodu dla .NET, który sugeruje następujące,
httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token);
Jednak klasa poświadczeń nie istnieje w WinRT. Czy ktoś ma jakieś pomysły, jak ustawić nagłówek autoryzacji?
c#
rest
oauth
windows-runtime
Stephen Hynes
źródło
źródło
Odpowiedzi:
Sposób na zrobienie tego jest następujący:
źródło
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "encrypted user/pwd");
Pobieranie zaszyfrowanego użytkownika / pwd z rozszerzenia Chrome Advanced Rest Client.źródło
Szukam dobrego sposobu na rozwiązanie tego problemu i patrzę na to samo pytanie. Mam nadzieję, że ta odpowiedź pomoże wszystkim, którzy mają ten sam problem, mnie lubią.
referencja z https://www.theidentityhub.com/hub/Documentation/CallTheIdentityHubApi
źródło
using
bloku. (Tak, wiem, że to brzmi odwrotnie, ale zepsujesz połączenia, jeśli użyjeszusing
zamiast po prostu recyklingu HttpClient.)Ponieważ dobrą praktyką jest ponowne użycie instancji HttpClient , problemy z wydajnością i wyczerpaniem portów , a ponieważ żadna z odpowiedzi nie daje tego rozwiązania (a nawet prowadzi do złych praktyk :(), umieściłem tutaj link do odpowiedzi, którą podałem na podobne pytanie:
https://stackoverflow.com/a/40707446/717372
Niektóre źródła, w jaki sposób korzystać z HttpClient we właściwy sposób:
źródło
Zgadzam się z odpowiedzią TheWhiteRabbit, ale jeśli masz dużo połączeń za pomocą HttpClient, kod wydaje mi się nieco powtarzalny.
Myślę, że istnieją 2 sposoby, aby nieco poprawić odpowiedź.
Utwórz klasę pomocnika, aby utworzyć klienta:
Stosowanie:
Utwórz metodę rozszerzenia:
Nie wygrywa nagrody za urodę, ale działa świetnie :)
Stosowanie:
Ponownie myślę, że 2 powyższe opcje sprawiają, że klient używa instrukcji nieco mniej powtarzalny. Pamiętaj, że najlepszą praktyką jest ponowne użycie klienta HttpClient, jeśli wykonujesz wiele połączeń HTTP, ale myślę, że to trochę poza zakresem tego pytania.
źródło
Ustawiałem token na okaziciela
Działało w jednym punkcie końcowym, ale nie w drugim. Problem polegał na tym, że miałem małe litery
b
na"bearer"
. Po zmianie teraz działa na oba api, które uderzam. Tak łatwo przeoczyć, jeśli nawet nie uważa się go za jeden ze stogów siana do szukania igły.Upewnij się, że masz
"Bearer"
- z kapitałem.źródło
Proponuję ci:
A potem możesz użyć tego w ten sposób:
źródło
Aby ustawić podstawowe uwierzytelnianie za pomocą C # HttpClient. Poniższy kod działa dla mnie.
źródło
Oto jak to zrobiłem:
Ten film z you-tube bardzo mi pomaga. Proszę sprawdź to. https://www.youtube.com/watch?v=qCwnU06NV5Q
źródło
Użyj podstawowych uprawnień i parametrów Json.
źródło
Jeśli chcesz ponownie użyć
HttpClient
, zaleca się, aby nie używaćDefaultRequestHeaders
ponieważ są one używane do wysyłania przy każdym żądaniu.Możesz spróbować:
źródło
6 lat później, ale dodanie tego na wypadek, gdyby komuś to pomogło.
https://www.codeproject.com/Tips/996401/Authenticate-WebAPIs-with-Basic-and-Windows-Authen
źródło
Opcja UTF8
źródło
Korzystanie z
AuthenticationHeaderValue
klasySystem.Net.Http
montażumożemy ustawić lub zaktualizować istniejący
Authorization
nagłówek dla naszegohttpclient
podobnego:źródło
BaseWebApi.cs
SubWebApi.cs
źródło
W przypadku, gdy chcesz wysłać
HttpClient
żądanie z tokenem okaziciela, ten kod może być dobrym rozwiązaniem:źródło
W sieci .core możesz użyć
lub
źródło
SetBasicAuthentication()
domyślnie nie jest dostępny, więc musi to być metoda rozszerzenia. Gdzie to jest zdefiniowane?Korzystanie z istniejącej biblioteki może być łatwiejsze.
Na przykład poniższe metody rozszerzenia są dodawane do Identity Server 4 https://www.nuget.org/packages/IdentityModel/
źródło
Oauth Przebieg procesu jest złożony i zawsze jest miejsce na taki czy inny błąd. Moja sugestia będzie polegać na tym, aby zawsze używać kodu typu „kocioł” i zestawu bibliotek do uwierzytelniania OAuth, co ułatwi Ci życie.
Oto link do zestawu bibliotek. Biblioteki OAuth dla .Net
źródło
to może działać, jeśli otrzymujesz json lub xml z usługi i myślę, że może to dać ci wyobrażenie o tym, jak działają nagłówki i typ T, jeśli użyjesz funkcji MakeXmlRequest (umieść wyniki w xmldocumnet) i MakeJsonRequest (umieść JSON w klasie, która ma taką samą strukturę jak odpowiedź JSON) w następny sposób
źródło
źródło
Może to pomóc w ustawieniu nagłówka:
źródło
HttpClient
, nieWebClient
.