Estou implementando uma API feita por outros colegas do Apiary.io, em um projeto de aplicativo da Windows Store.
Eles mostram este exemplo de um método que eu tenho que implementar:
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();
}
}
Neste e em alguns outros métodos, preciso ter um cabeçalho com um token que recebo antes.
Aqui está uma imagem do Postman (extensão chrome) com o cabeçalho do qual estou falando:
Como adiciono esse cabeçalho de autorização à solicitação?
Respostas:
Ao usar GetAsync com o HttpClient, você pode adicionar os cabeçalhos de autorização da seguinte forma:
Isso adiciona o cabeçalho da autorização por toda a vida útil do HttpClient; portanto, é útil se você estiver acessando um site em que o cabeçalho da autorização não muda.
Aqui está uma resposta SO detalhada
fonte
Uma resposta posterior, mas porque ninguém deu essa solução ...
Se você não desejar definir o cabeçalho na
HttpClient
instância, adicionando-o aoDefaultRequestHeaders
, poderá definir cabeçalhos por solicitação .Mas você será obrigado a usar o
SendAsync()
método.Essa é a solução certa se você deseja reutilizar a
HttpClient
- que é uma boa prática paraUse-o assim:
fonte
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token);
"portador" seria um inválido cabeçalho HTTPusing
mas poderia instanciar no construtor e dispor noDispose()
using
HttpClient (isso é ruim), eu disse no HttpRequesMessage (porque há buffers de memória não gerenciados para streaming que DEVEM ser descartados após o uso). A solicitação e a resposta são e devem ser descartadas a cada solicitação (caso contrário, você manterá grandes blocos de memória bloqueados por um longo tempo). OHttpClient
é reutilizável, até certo ponto.A resposta aceita funciona, mas pode ficar complicada quando eu quero tentar adicionar cabeçalhos Accept. Foi assim que acabei. Parece mais simples para mim, então acho que vou continuar com isso no futuro:
fonte
Você pode adicionar os cabeçalhos necessários ao
HttpClient
.Aqui está um bom tutorial sobre isso.
Isso não se refere apenas a solicitações POST, você também pode usá-lo para solicitações GET.
fonte
Após a resposta do greenhoorn, você pode usar "Extensões" assim:
E use:
fonte
Às vezes, você só precisa desse código.
fonte