8

我正在尝试将现有应用程序转换为 VS 11 Developer Preview 中的 Metro UI 应用程序。这意味着针对 WinRT 运行时运行(如果我错了,请纠正我)。这在 Windows 8 Developer Preview 上运行。

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

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

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

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

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

如何修改 User-Agent 标头?

4

2 回答 2

17

经过一番修补,我现在已经弄清楚了如何在 WinRT 中执行此操作。此版本中的 HttpWebRequest API 已更改为比完整的 .NET Framework 中的要差得多。但是,我可以使用新 API 发送请求HttpClient,这将允许我发送用户代理标头:

var req = new HttpClient(handler)
var message = new HttpRequestMessage(HttpMethod.Get, url);
message.Headers.Add("User-Agent", "myCustomUserAgent");
var response = await req.SendAsync(message);
于 2011-09-17T17:25:00.347 回答
1

请注意,在 Windows 10 中,可以完全按照您问题中的示例进行操作。

于 2015-10-04T22:22:26.923 回答