как сделать так, чтобы c # wpf webbrowser control загружал мобильные версии сайтов - PullRequest
0 голосов
/ 07 октября 2009

У меня есть простое приложение WPF с контролем веб-браузера. Когда я направляю элемент управления на загрузку страницы, я хотел бы, чтобы этот элемент управления сообщал серверу, что он пытается загрузить страницу с мобильного устройства и, следовательно, загружает уменьшенную версию страницы. Я знаю, что многие сайты просто добавляют мобильный телефон перед адресом, поэтому мобильная страница google.com просто mobile.google.com, но мне интересно, есть ли способ загрузить веб-сервер, чтобы мой веб-браузер автоматически направлял управление мобильная версия сайта? Я чувствую, что должен быть очень простой способ сделать это, но я просто не могу понять это:).

Заранее спасибо !!!

Ответы [ 4 ]

9 голосов
/ 24 ноября 2010

На самом деле WebBrowser поддерживает изменение агента пользователя с помощью заголовков в методе Navigate:

this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );
1 голос
/ 04 мая 2016

Я знаю, что это старый, но это легко сделать:

Сначала вам понадобится строка агента пользователя, и она должна быть отформатирована. Вот как я делаю это ниже wbMobile - это веб-браузер. Этот пример приведет вас на веб-сайт Mobile Bing

wbMobile.Navigate(new Uri("http://m.bing.com/", UriKind.RelativeOrAbsolute), string.Empty, null, string.Format("User-Agent: {0}", "Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54"));

Это приведет к переходу на веб-страницу с использованием строки мобильного агента пользователя и позволит вам просматривать мобильные веб-сайты на лету в элементе управления веб-браузера

0 голосов
/ 03 июля 2015

Решение Бойдского не было правильным для меня.Лучшее решение для этого случая:

Изменение пользовательского агента элемента управления WebBrowser

Но иногда «navigator.userAgent» не устанавливается с заголовком - решение.В этом случае вы должны использовать UrlMkSetSessionOption . MSDN

// import .. use a internal static class like "Native" ;)
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
internal static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

// usage
string userAgent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)";

UrlMkSetSessionOption(0x10000002, null, 0, 0);

UrlMkSetSessionOption(0x10000001, userAgent, userAgent.Length, 0);

Надлежащие строки пользовательских агентов вы можете найти здесь

Веселитесь!

0 голосов
/ 07 октября 2009

Обычно этим управляет сайт с помощью User Agent , который нельзя изменить с помощью стандартного элемента управления WebBrowser. Существует альтернативный элемент управления веб-браузера WPF, основанный на Chromium , который можно загрузить с CodePlex . Возможно, он не поддерживает спуфинг агента пользователя из коробки, но он с открытым исходным кодом, поэтому вы можете вручную изменить его в коде на iPhone, Windows Mobile и т. Д.

...