Можно ли изменить пользовательский агент для WinRT HttpWebRequest?

Я пытаюсь преобразовать существующее приложение в приложение Metro UI в VS 11 Developer Preview. Это означает работу со средой выполнения WinRT (поправьте меня, если я ошибаюсь). Это работает в Windows 8 Developer Preview.

Мне нужно вызвать REST API, который требует установки определенного пользовательского агента. Это кажется невозможным в WInRT. У меня есть следующий исходный код:

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

Но свойство UserAgent не определено для HttpWebRequest. Я также пробовал:

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

Это приводит к исключению среды выполнения: System.ArgumentException: этот заголовок необходимо изменить с помощью соответствующего свойства или метода.

Как я могу изменить заголовок User-Agent?


person driis    schedule 17.09.2011    source источник


Ответы (2)


Немного повозившись, я понял, как это сделать в WinRT. API HttpWebRequest изменился в этой версии и стал намного хуже, чем в полной версии .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);
person driis    schedule 17.09.2011
comment
Версия библиотек .Net, доступная при написании WinRT-приложений с C#, хуже полной, чтобы убрать дублирование. Но при написании традиционных приложений вы все равно можете использовать полный фреймворк. - person svick; 18.09.2011
comment
Проверьте образец HttpClient — code.msdn.microsoft.com/windowsapps/HttpClient-sample- 55700664 - person RredCat; 09.06.2012

Просто отметим, что в Windows 10 это можно сделать точно так же, как в примере в вашем вопросе.

person Ivan Ičin    schedule 04.10.2015