2012-05-04 28 views
20

Sử dụng HttpClient from NuGet.Làm thế nào tôi có thể nhận được System.Net.Http.HttpClient để không theo 302 chuyển hướng?

Ứng dụng sẽ gửi bài đăng với ứng dụng khách.PostAsync(). Tôi muốn nó KHÔNG theo 302 chuyển hướng.

làm cách nào?

Tôi hình tôi chỉ có thể đặt AllowAutoRedirect như được mô tả trong this answer.

Nhưng làm cách nào để nhận được HttpWebRequest được sử dụng trong cuộc gọi PostAsync()?

Trả lời

30

Một trong các quá tải của công cụ xây dựng HttpClient có một đối số WebRequestHandler. Lớp học HttpClient sử dụng số WebRequestHandler này để gửi yêu cầu.

Lớp WebRequestHandler cung cấp thuộc tính được gọi là AllowAutoRedirect để định cấu hình hành vi chuyển hướng. Đặt thuộc tính này thành false hướng dẫn HttpClient không theo dõi phản hồi chuyển hướng.

Đây là một mẫu mã nhỏ:

WebRequestHandler webRequestHandler = new WebRequestHandler(); 

webRequestHandler.AllowAutoRedirect = false; 

HttpClient httpClient = new HttpClient(webRequestHandler); 

// Send a request using GetAsync or PostAsync 

Task<HttpResponseMessage> response = httpClient.GetAsync("http://www.google.com"); 
+0

ok cảm ơn. Điều đó có nghĩa là tôi không thể chỉ định hành vi 302 sau mỗi cuộc gọi, đúng không? Đó là mỗi xử lý, trong đó ngụ ý, tôi đoán, mỗi trường hợp của HttpClient. Vâng? – Cheeso

+0

Vâng, đó là mỗi trường hợp của HttpClient. Nếu bạn cố sửa đổi thuộc tính AllowAutoRedirect giữa hai cuộc gọi, bạn sẽ nhận được một ngoại lệ. – Hans

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