Можно ли изменить User-Agent для WinRT HttpWebRequest? - PullRequest
8 голосов
/ 17 сентября 2011

Я пытаюсь преобразовать существующее приложение в приложение 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?

Ответы [ 2 ]

17 голосов
/ 17 сентября 2011

После некоторого возни, я теперь решил, как это сделать в WinRT. API HttpWebRequest в этой версии изменился и стал намного беднее, чем в полной .NET Framework. Однако я могу отправить запрос с новым HttpClient API, который позволит мне отправить заголовок 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);
1 голос
/ 05 октября 2015

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

...