У меня есть HttpClient, который я использую для REST API. Однако у меня возникают проблемы при настройке заголовка авторизации. Мне нужно установить заголовок для токена, который я получил от выполнения моего запроса OAuth. Я видел некоторый код для .NET, который предлагает следующее,
httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token);
Однако класс Credential не существует в WinRT. У кого-нибудь есть идеи, как установить заголовок авторизации?
c#
rest
oauth
windows-runtime
Стивен Хайнс
источник
источник
Ответы:
Таким образом, способ сделать это заключается в следующем,
источник
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "encrypted user/pwd");
Взятие зашифрованного пользователя / pwd из расширения Chrome Advanced Rest Client.источник
Я ищу хороший способ справиться с этой проблемой, и я смотрю на тот же вопрос. Надеюсь, этот ответ поможет всем, у кого такая же проблема, как я.
ссылка с https://www.theidentityhub.com/hub/Documentation/CallTheIdentityHubApi
источник
using
блок. (Да, я знаю, что это звучит задом наперед, но вы будете пропускать соединения, если будете использоватьusing
вместо простой утилизации HttpClient.)Так как рекомендуется повторно использовать экземпляр HttpClient для проблем с производительностью и исчерпанием портов , а также потому, что ни один из ответов не дает такого решения (и даже не ведет вас к плохим практикам :(), я поместил здесь ссылку на ответ, который я сделал на похожий вопрос:
https://stackoverflow.com/a/40707446/717372
Некоторые источники о том, как правильно использовать HttpClient:
источник
Я согласен с ответом TheWhiteRabbit, но, если у вас много звонков с использованием HttpClient, код кажется немного повторяющимся, на мой взгляд.
Я думаю, что есть 2 способа немного улучшить ответ.
Создайте вспомогательный класс для создания клиента:
Применение:
Создайте метод расширения:
Не выигрывает приз за красоту, но отлично работает :)
Применение:
Опять же, я думаю, что 2 вышеупомянутых варианта делают клиент, использующий оператор, немного менее повторяющимся. Имейте в виду, что рекомендуется повторно использовать HttpClient, если вы делаете несколько http-вызовов, но я думаю, что это немного выходит за рамки этого вопроса.
источник
Я устанавливал токен на предъявителя
Это работало в одной конечной точке, но не в другой. Проблема в том , что я был в нижнем регистре
b
на"bearer"
. После изменения теперь это работает для обоих API, я бью. Так легко пропустить, если вы даже не рассматриваете это как один из стогов сена, чтобы искать иглу.Обязательно иметь
"Bearer"
- с капиталом.источник
Я предлагаю вам:
И тогда вы можете использовать это так:
источник
Чтобы установить базовую аутентификацию с C # HttpClient. Следующий код работает для меня.
источник
Вот как я это сделал:
Это видео с YouTube поможет мне в этом. Пожалуйста, проверьте это. https://www.youtube.com/watch?v=qCwnU06NV5Q
источник
Используйте базовые параметры авторизации и Json.
источник
Если вы хотите использовать повторно
HttpClient
, рекомендуется не использовать, такDefaultRequestHeaders
как они используются для отправки с каждым запросом.Вы можете попробовать это:
источник
6 лет спустя, но добавьте это на случай, если это кому-нибудь поможет.
https://www.codeproject.com/Tips/996401/Authenticate-WebAPIs-with-Basic-and-Windows-Authen
источник
Опция UTF8
источник
Использование
AuthenticationHeaderValue
классаSystem.Net.Http
сборкимы можем установить или обновить существующий
Authorization
заголовок для нашегоhttpclient
так:источник
BaseWebApi.cs
SubWebApi.cs
источник
В случае, если вы хотите отправить
HttpClient
запрос с Bearer Token, этот код может быть хорошим решением:источник
В сети .core вы можете использовать
или
источник
SetBasicAuthentication()
по умолчанию недоступен, поэтому он должен быть методом расширения. Где это определено?Может быть проще использовать существующую библиотеку.
Например, приведенные ниже методы расширения добавляются с помощью Identity Server 4 https://www.nuget.org/packages/IdentityModel/
источник
Поток процессов Oauth сложен, и всегда есть место для той или иной ошибки. Мое предложение будет всегда использовать стандартный код и набор библиотек для потока аутентификации OAuth. Это облегчит вашу жизнь.
Вот ссылка на набор библиотек. Библиотеки OAuth для .Net
источник
это может работать, если вы получаете json или xml от службы, и я думаю, что это может дать вам представление о том, как работают заголовки и тип T, если вы используете функцию MakeXmlRequest (поместите результаты в xmldocumnet) и MakeJsonRequest (поместите json в тот класс, который вам нужен и который имеет ту же структуру, что и ответ json) следующим образом
источник
источник
Это может помочь в настройке заголовка:
источник
HttpClient
, а неWebClient
.