2015-04-22 2 views
38

Im реализует api, созданный другими коллегами с Apiary.io, в проекте приложения магазина Windows.Добавление заголовков при использовании httpClient.GetAsync

они показывают этот пример метода я должен реализовать

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(); 

} 
} 

в этом и некоторые другие методы, мне нужно иметь заголовок с маркером, который я получаю, прежде чем

ЭРВО образ почтальона (chrome extension) с заголовком im, говорящий о enter image description here

Как добавить заголовок авторизации в запрос?

+0

возможно дубликат [Настройка авторизации колонтитуле HttpClient] (http://stackoverflow.com/questions/14627399/setting-authorization-header-of-httpclient) –

ответ

52

Вы добавляете их HttpClient так:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token"); 

Вот подробная SO answer

4

Вы можете добавить все необходимые заголовки в HttpClient.

Вот хороший tutorial об этом.

Это не просто ссылка на POST-запросы, вы также можете использовать его для GET-запросов.

+0

спасибо :) это помогло – Ric

17

Общепринятые ответ работает, но может осложнилась, когда я хотел попробовать добавить Accept заголовки. Это то, чем я закончил. Кажется, проще ко мне, так что я думаю, я буду придерживаться его в будущем:

client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1"); 
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring); 
57

Позднее ответ, но потому, что никто не даст это решение ...

Если вы не хотите, чтобы установить заголовок в экземпляре HttpClient, добавив его в DefaultRequestHeaders, , вы можете установить заголовки для запроса. Но вы будете обязаны использовать метод SendAsync(). (Это может помочь , если вы хотите повторно использовать HttpClient --which является хорошей и делать практику: что-то нить безопасно и без отправки каждый раз одни и те же заголовки ...)

Используйте его так:

 var requestMessage = new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"); 
     requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token); 
     httpClient.SendAsync(requestMessage); 
+0

Кажется безопаснее не использовать DefaultRequestHeaders если значение изменяется часто. –

+2

Обратите внимание, что вам, скорее всего, понадобится 'requestMessage.Headers.Authorization = new AuthenticationHeaderValue (« Bearer », your_token);« Bearer »будет недопустимым HTTP-заголовком –

+0

Спасибо за это, мы повторно используем наш HttpClient, и это помогло нам – StevenMcD