2011-09-17 55 views
8

我正試圖將現有應用程序轉換爲VS 11開發人員預覽版中的Metro UI應用程序。這意味着針對WinRT運行時運行(糾正我,如果我錯了)。這在Windows 8開發人員預覽版上運行。是否可以修改WinRT HttpWebRequest的用戶代理?

我需要調用一個REST API,它需要設置一個特定的用戶代理。這在WInRT中似乎不可能。我有以下原始代碼:

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

但是UserAgent屬性沒有爲HttpWebRequest定義。我還嘗試:

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

這導致運行時異常:System.ArgumentException:此標頭必須使用合適的屬性或方法進行修改。

如何修改User-Agent頭?

回答

17

經過一番修改之後,我現在已經研究出如何在WinRT中做到這一點。這個版本中的HttpWebRequest API已經發生了變化,比完整的.NET Framework更糟糕。不過,我可以送新HttpClient API的請求,這將讓我送的用戶代理頭:

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

從C#編寫WinRT應用程序時可用的.Net庫版本比完整的版本差,以消除重複。但是在編寫傳統的應用程序時,仍然可以使用完整的框架。 – svick

+2

檢查HttpClient示例 - http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664 – RredCat

1

只是要注意的是在Windows 10也可能這樣做完全一樣的例子在你的問題。