2011-09-17 27 views
8

Tôi đang cố chuyển đổi ứng dụng hiện có sang ứng dụng Giao diện người dùng Metro trong VS 11 Developer Preview. Điều này có nghĩa là chạy với thời gian chạy WinRT (đúng với tôi nếu tôi sai). Điều này chạy trên Windows 8 Developer Preview.Có thể sửa đổi User-Agent cho một WinRT HttpWebRequest không?

Tôi cần gọi API REST, yêu cầu phải đặt đại lý người dùng cụ thể. Điều này dường như không thể thực hiện được trong WInRT. Tôi có mã ban đầu sau:

_request = WebRequest.CreateHttp(url); 
_request.UserAgent = UserAgent; 

Nhưng thuộc tính UserAgent không được xác định cho HttpWebRequest. Tôi cũng đã cố gắng:

_request.Headers["User-Agent"] = UserAgent; 

Điều này dẫn đến một ngoại lệ thời gian chạy: System.ArgumentException: Tiêu đề này phải được sửa đổi bằng cách sử dụng tài sản hoặc phương pháp thích hợp.

Làm cách nào để sửa đổi tiêu đề Tác nhân người dùng?

Trả lời

17

Sau khi một số tinkering xung quanh, tôi đã bây giờ làm việc ra làm thế nào để làm điều này trong WinRT. HttpWebRequest API đã thay đổi trong phiên bản này sẽ kém hơn rất nhiều so với .NET Framework đầy đủ. Tuy nhiên, tôi có thể gửi một yêu cầu với HttpClient API mới, mà sẽ cho phép tôi gửi header user-agent:

var req = new HttpClient(handler) 
var message = new HttpRequestMessage(HttpMethod.Get, url); 
message.Headers.Add("User-Agent", "myCustomUserAgent"); 
var response = await req.SendAsync(message); 
+3

Phiên bản thư viện .Net có sẵn khi viết ứng dụng WinRT từ C# kém hơn phiên bản đầy đủ, để loại bỏ trùng lặp. Nhưng khi viết các ứng dụng truyền thống, bạn vẫn có thể sử dụng toàn bộ khung công tác. – svick

+2

Kiểm tra mẫu HttpClient - http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664 – RredCat

1

Chỉ cần lưu ý rằng trong Windows 10 có thể làm điều đó một cách chính xác như trong ví dụ trong câu hỏi của bạn.

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