Tôi đang cố gắng sử dụng một HttpClient
cho dịch vụ của bên thứ ba yêu cầu xác thực HTTP cơ bản. Tôi đang sử dụng AuthenticationHeaderValue
. Đây là những gì tôi đã đưa ra cho đến nay:HttpClient tiêu đề xác thực không nhận được gửi
HttpRequestMessage<RequestType> request =
new HttpRequestMessage<RequestType>(
new RequestType("third-party-vendor-action"),
MediaTypeHeaderValue.Parse("application/xml"));
request.Headers.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "username", "password"))));
var task = client.PostAsync(Uri, request.Content);
ResponseType response = task.ContinueWith(
t =>
{
return t.Result.Content.ReadAsAsync<ResponseType>();
}).Unwrap().Result;
Dường như hành động POST hoạt động tốt, nhưng tôi không lấy lại dữ liệu tôi mong đợi. Thông qua một số thử nghiệm và lỗi, và cuối cùng sử dụng Fiddler để đánh hơi lưu lượng truy cập thô, tôi phát hiện ra tiêu đề ủy quyền không được gửi đi.
Tôi đã xem this, nhưng tôi nghĩ rằng tôi đã có sơ đồ xác thực được chỉ định như một phần của hàm tạo AuthenticationHeaderValue
.
Có điều gì tôi đã bỏ lỡ không?
Tôi đã thử điều đó và điều gì đó tương tự với 'request.Headers.Authorization' với cùng kết quả. Nó để lại cho tôi với một chút của một scratcher đầu như tôi không hoàn toàn chắc chắn những gì để thử tiếp theo. Tôi biết bản xem trước MVC4 beta và 4.5 trực tiếp không tương thích với một số thứ - tôi tự hỏi liệu điều đó có liên quan gì đến nó không? – Ross
Bản cập nhật của bạn dường như ít nhất gửi tiêu đề ủy quyền. Tôi chưa thể truy xuất dữ liệu từ dịch vụ của bên thứ ba (có thể có điều gì đó không đúng trong phần yêu cầu mà tôi đã bỏ lỡ), nhưng ít nhất các tiêu đề chính xác đang đi qua dây. Đó là một sự khởi đầu. Cảm ơn bạn! – Ross
ASCII hoặc UTF-8? Xem http://stackoverflow.com/questions/11743160/how-do-i-encode-and-decode-a-base64-string. – Philippe