2009-10-07 4 views
-1

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

Заранее благодарен!

ответ

0

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

+0

Очень четкий ответ. Я собирался сказать, что вам нужно установить пользовательский агент на телефонный UA, но я не знал, что вы не можете легко изменить UA. –

+0

Спасибо за ваш ответ! Я попробую Хром. – Evan

10

Фактически, WebBrowser поддерживает изменение пользовательского агента через заголовки в Метод навигации:

this.yourWebBrowserControl.Navigate(new Uri("http://www.yoursite.com"), string.Empty, null, string.Format("User-Agent: {0}", "Your user agent string here")); 
+0

Я думаю, что вы, возможно, единственный человек в переполнении стека, который когда-либо опубликовал правильный ответ на этот вопрос ... –

0

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

Changing the user agent of the WebBrowser control

Но когда-нибудь «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); 

Правильные строки агента пользователя вы можете найти here

получайте удовольствие!

1

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

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

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")); 

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