Eu tenho um HttpClient que estou usando para uma API REST. No entanto, estou com problemas para configurar o cabeçalho da autorização. Preciso definir o cabeçalho para o token que recebi ao fazer minha solicitação OAuth. Eu vi algum código para .NET que sugere o seguinte,
httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token);
No entanto, a classe Credential não existe no WinRT. Alguém tem alguma idéia de como definir o cabeçalho de autorização?
c#
rest
oauth
windows-runtime
Stephen Hynes
fonte
fonte
Respostas:
Portanto, a maneira de fazer isso é a seguinte,
fonte
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "encrypted user/pwd");
Tirar usuário / senha criptografado da extensão de cromo do Advanced Rest Client.fonte
Eu procuro uma boa maneira de lidar com esse problema e estou analisando a mesma pergunta. Felizmente, esta resposta ajudará todos que têm o mesmo problema a gostar de mim.
referência de https://www.theidentityhub.com/hub/Documentation/CallTheIdentityHubApi
fonte
using
bloco. (Sim, eu sei que isso soa ao contrário, mas você vazará conexões se usar emusing
vez de apenas reciclar o HttpClient.) #Como é uma boa prática reutilizar a instância HttpClient , para problemas de desempenho e esgotamento de portas , e porque nenhuma das respostas fornece essa solução (e até mesmo leva você a práticas inadequadas :(), coloquei aqui um link para a resposta que fiz em uma pergunta semelhante:
https://stackoverflow.com/a/40707446/717372
Algumas fontes sobre como usar o HttpClient da maneira certa:
fonte
Concordo com a resposta do TheWhiteRabbit, mas se você tiver muitas chamadas usando o HttpClient, o código parecerá um pouco repetitivo na minha opinião.
Eu acho que existem 2 maneiras de melhorar um pouco a resposta.
Crie uma classe auxiliar para criar o cliente:
Uso:
Crie um método de extensão:
Não ganha um prêmio de beleza, mas funciona muito bem :)
Uso:
Novamente, acho que as duas opções acima tornam o cliente usando a declaração um pouco menos repetitivo. Lembre-se de que é uma boa prática reutilizar o HttpClient se você estiver fazendo várias chamadas http, mas acho que está um pouco fora do escopo desta pergunta.
fonte
Eu estava configurando o token do portador
Ele estava trabalhando em um terminal, mas não em outro. A questão era que eu estava
b
em minúsculas"bearer"
. Depois da mudança, agora funciona para as duas APIs que estou acertando. É uma coisa tão fácil de perder, se você não está nem considerando isso como um dos palheiros para procurar a agulha.Certifique-se de ter
"Bearer"
- com capital.fonte
Eu sugiro a você:
E então você pode usá-lo assim:
fonte
Para definir a autenticação básica com o C # HttpClient. O código a seguir está funcionando para mim.
fonte
Isto é como eu fiz isso:
Este vídeo do YouTube me ajuda muito. Por favor, confira. https://www.youtube.com/watch?v=qCwnU06NV5Q
fonte
Use autorização básica e parâmetros Json.
fonte
Se você deseja reutilizar o
HttpClient
, é recomendável não usá-loDefaultRequestHeaders
como eles são usados para enviar com cada solicitação.Você pode tentar o seguinte:
fonte
Seis anos depois, mas adicionando isso no caso de ajudar alguém.
https://www.codeproject.com/Tips/996401/Authenticate-WebAPIs-with-Basic-and-Windows-Authen
fonte
Opção UTF8
fonte
Usando
AuthenticationHeaderValue
classe deSystem.Net.Http
montagempodemos definir ou atualizar o
Authorization
cabeçalho existente para o seguintehttpclient
:fonte
BaseWebApi.cs
SubWebApi.cs
fonte
Caso você queira enviar uma
HttpClient
solicitação com o Bearer Token, esse código pode ser uma boa solução:fonte
No net .core você pode usar
ou
fonte
SetBasicAuthentication()
não está disponível por padrão, portanto deve ser um método de extensão. Onde é definido?Pode ser mais fácil usar uma biblioteca existente.
Por exemplo, os métodos de extensão abaixo são adicionados ao Identity Server 4 https://www.nuget.org/packages/IdentityModel/
fonte
O fluxo do processo Oauth é complexo e sempre há espaço para um erro ou outro. Minha sugestão será sempre usar o código padrão e um conjunto de bibliotecas para o fluxo de autenticação OAuth. Isso facilitará sua vida.
Aqui está o link para o conjunto de bibliotecas. Bibliotecas OAuth para .Net
fonte
isso poderia funcionar, se você estiver recebendo um json ou um xml do serviço e acho que isso pode lhe dar uma idéia sobre como os cabeçalhos e o tipo T também funcionam, se você usar a função MakeXmlRequest (colocar resultados em xmldocumnet) e MakeJsonRequest (coloque o json na classe que você deseja que tenha a mesma estrutura que a resposta do json) da próxima maneira
fonte
fonte
Isso pode ajudar a definir o cabeçalho:
fonte
HttpClient
, nãoWebClient
.