是否可以修改WinRT HttpWebRequest的User-Agent?

dri*_*iis 8 c# windows-8 windows-runtime

我正在尝试将现有应用转换为VS 11开发人员预览版中的Metro UI应用.这意味着针对WinRT运行时运行(如果我错了,请纠正我).这适用于Windows 8开发人员预览版.

我需要调用REST API,这需要设置特定的用户代理.这在WInRT中似乎不可能.我有以下原始代码:

_request = WebRequest.CreateHttp(url);
_request.UserAgent = UserAgent;
Run Code Online (Sandbox Code Playgroud)

但是没有为HttpWebRequest定义UserAgent属性.我也尝试过:

_request.Headers["User-Agent"] = UserAgent;
Run Code Online (Sandbox Code Playgroud)

这会导致运行时异常:System.ArgumentException:必须使用适当的属性或方法修改此标头.

如何修改User-Agent标头?

dri*_*iis 17

经过一些修补,我现在已经解决了如何在WinRT中做到这一点.HttpWebRequest API在此版本中已更改为比完整.NET Framework中更差.但是,我可以使用新HttpClientAPI 发送请求,这将允许我发送用户代理标头:

var req = new HttpClient(handler)
var message = new HttpRequestMessage(HttpMethod.Get, url);
message.Headers.Add("User-Agent", "myCustomUserAgent");
var response = await req.SendAsync(message);
Run Code Online (Sandbox Code Playgroud)

  • 从C#编写WinRT应用程序时可用的.Net库版本比完整版本更差,以消除重复.但是在编写传统应用程序时,您仍然可以使用完整的框架. (3认同)
  • 检查HttpClient示例 - http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664 (2认同)