2009-10-07 5 views
-1

J'ai une application WPF simple avec un contrôle webbrowser. Lorsque je dirige le contrôle pour charger une page, j'aimerais que le contrôle dise au serveur qu'il essaie de charger la page à partir de ce qu'il s'agit d'un appareil mobile et donc de charger la plus petite version de la page. Je sais que beaucoup de sites ajoutent simplement des mobiles avant l'adresse, donc la page mobile de google.com est juste mobile.google.com, mais je me demande s'il y a un moyen de charger le serveur web pour diriger automatiquement mon contrôle webbrowser vers la version mobile du site? Je pense qu'il devrait y avoir un moyen très simple de le faire, mais je ne peux pas le comprendre :).Comment faire pour que le contrôle C# wpf webbrowser charge la version mobile des sites Web

Merci d'avance !!!

Répondre

0

Ceci sera généralement contrôlé par le site en utilisant le User Agent, ce que vous ne pouvez pas changer avec le contrôle WebBrowser standard. Il existe un autre contrôle WPF webbrowser, basé sur Chromium, que vous pouvez télécharger à partir de CodePlex. Il peut ne pas prendre en charge le spoofing de l'agent utilisateur, mais il est open source. Vous pouvez donc le modifier manuellement sur un iPhone, Windows Mobile, etc.

+0

de réponse très claire. J'allais dire que vous devez configurer l'agent utilisateur sur un UA basé sur un téléphone, mais je ne savais pas que vous ne pouviez pas facilement changer l'UA. –

+0

Merci pour votre réponse! Je vais essayer Chrome. – Evan

10

Actuellement, WebBrowser prend en charge la modification de l'agent utilisateur via des en-têtes. la méthode Navigate:

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

Je pense que vous pourriez être la seule personne sur débordement de pile à avoir jamais posté une réponse correcte à cette question ... –

0

La solution de Boydski n'était pas la bonne pour moi. La meilleure solution pour ce cas:

Changing the user agent of the WebBrowser control

Mais quelque temps le "navigator.userAgent" est pas défini avec en-tête - solution. Dans ce cas, vous devez utiliser 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); 

chaînes d'agent utilisateur approprié, vous pouvez trouver here

Amusez-vous!

1

je sais que c'est vieux, mais cela est une chose facile à faire:

D'abord, vous avez besoin de la chaîne de l'agent utilisateur et il doit être chaîne formatée. Voici comment je le fais ci-dessous: wbMobile est un contrôle webbrowser. Cet exemple vous amènera sur le site 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")); 

Cela accédez à la page Web en utilisant une chaîne d'agent utilisateur mobile et vous permettent de visualiser des sites Web mobiles à la volée dans le contrôle WebBrowser

Questions connexes