2015-04-22 20 views
38

Im triển khai api được thực hiện bởi các đại diện khác với Apiary.io, trong dự án ứng dụng cửa sổ cửa hàng.Thêm tiêu đề khi sử dụng httpClient.GetAsync

họ cho thấy ví dụ này của một phương pháp tôi phải thực hiện

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

} 
} 

trong này và một số phương pháp khác tôi cần phải có một tiêu đề với một mã thông báo rằng tôi nhận được trước khi

heres một hình ảnh của người đưa thư (tiện ích chrome) có tiêu đề im nói về enter image description here

làm cách nào để thêm tiêu đề Cấp phép đó vào yêu cầu?

+0

thể trùng lặp của [Thiết Authorization header của HttpClient] (http://stackoverflow.com/questions/14627399/setting-authorization-header-of-httpclient) –

Trả lời

52

Bạn thêm chúng vào httpclient như vậy:

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

Dưới đây là một SO answer

4

Bạn có thể thêm bất kỳ tiêu đề nào bạn cần vào số HttpClient.

Đây là số tutorial đẹp về nó.

Điều này không chỉ tham chiếu đến các yêu cầu POST, bạn cũng có thể sử dụng nó cho các yêu cầu GET.

+0

nhờ :) nó giúp – Ric

17

Các công trình chấp nhận câu trả lời chi tiết nhưng có thể bị phức tạp khi tôi muốn thử thêm Chấp nhận tiêu đề. Đây là những gì tôi đã kết thúc với. Nó có vẻ đơn giản với tôi vì vậy tôi nghĩ rằng tôi sẽ gắn bó với nó trong tương lai:

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

Một câu trả lời sau đó nhưng vì không ai đưa ra giải pháp này ...

Nếu bạn không muốn cài đặt tiêu đề trên phiên bản HttpClient bằng cách thêm nó vào DefaultRequestHeaders, bạn có thể đặt tiêu đề theo yêu cầu. Nhưng bạn sẽ phải sử dụng phương thức SendAsync(). (Nó có thể giúp nếu bạn muốn sử dụng lại các httpclient --which là một practice-- tốt và làm điều gì đó chủ đề an toàn và không gửi mỗi khi các tiêu đề tương tự ...)

Sử dụng nó như thế:

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

vẻ an toàn hơn để không sử dụng DefaultRequestHeaders nếu giá trị thay đổi thường xuyên. –

+2

Lưu ý bạn rất có thể cần 'requestMessage.Headers.Authorization = new AuthenticationHeaderValue (" Bearer ", your_token);" "Bearer" sẽ là tiêu đề HTTP không hợp lệ –

+0

Cảm ơn vì điều này, chúng tôi đang sử dụng lại HttpClient và điều này đã giúp chúng tôi – StevenMcD

Các vấn đề liên quan