Domanda

Ho una semplice applicazione WPF con un controllo browser web. Quando ho diretto il controllo per caricare una pagina mi piacerebbe avere il controllo raccontare il server sta cercando di caricare la pagina da che si tratta di un dispositivo mobile e quindi caricare la versione più piccola della pagina. So che un sacco di siti basta aggiungere mobile prima l'indirizzo, in modo di google.com pagina mobile è solo mobile.google.com, ma mi chiedo se c'è un modo per caricare il avere il web server dirigere automaticamente il mio controllo WebBrowser per la versione mobile del sito? Mi sento come se ci dovrebbe essere un modo molto semplice per fare questo, ma non riesco proprio a capirlo:.)

Grazie in anticipo !!!

È stato utile?

Soluzione

Questa sarà generalmente controllato dal sito utilizzando le href="http://en.wikipedia.org/wiki/User_agent" User Agent , che non è qualcosa si può cambiare con il controllo WebBrowser standard. C'è un controllo WebBrowser WPF alternativo, basato sulla cromo , che può essere scaricato da CodePlex . Potrebbe non supportare User Agent spoofing fuori dalla scatola, ma è open source, in modo da poter modificare manualmente il codice a un iPhone, Windows Mobile, ecc.

Altri suggerimenti

In realtà, il browser Web non supporta la modifica della User Agent tramite header nel metodo Navigate:

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

So che questo è vecchio, ma questa è una cosa facile da fare:

In primo luogo è necessario la stringa user agent ed è necessario essere stringa formattata. Questo è come lo faccio qui di seguito wbMobile è un controllo browser web. Questo esempio vi porterà al sito web di bing cellulare

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

In questo modo accedere alla pagina web utilizzando una stringa user agent mobile e consentono di visualizzare siti web per cellulari al volo nel controllo WebBrowser

La soluzione di Boydski non era quello giusto per me. La migliore soluzione per questo caso:

Cambiare l'user agent del controllo WebBrowser

Ma qualche volta il "navigator.userAgent" non è impostata con l'intestazione - soluzione. In questo caso è necessario utilizzare 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);

stringhe user agent Proper puoi trovare qui

Buon divertimento!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top