2010-12-09 23 views
5

Ich versuche, diese URL zu öffnen, eine WebBrowserTask in WP7 verwendet wird, und es funktioniert nicht (ich einen benutzerdefinierten Fehler auf unserer Website zu bekommen), aber wenn ich es in der Hand geben, es funktioniert fein. Irgendwelche Ideen?Windows Phone 7 WebBrowserTask Problem

Es funktioniert auch völlig in Ordnung in Google Chrome und Internet Explorer 7. Diese

ist die url:

http://www.symfonee.com/Improv/addison/comedians/Bio.aspx?ShowDate=12/15/10&ShowTime=8:00p&Uid=54918a0d-1beb-4552-bdc8-2d474e3ea5ae

Und dies ist mein Code:

string url = "http://www.symfonee.com/Improv/addison/comedians/Bio.aspx?ShowDate=12/15/10&ShowTime=8:00p&Uid=54918a0d-1beb-4552-bdc8-2d474e3ea5ae"; 

WebBrowserTask browser = new WebBrowserTask(); 
browser.URL = url; 
browser.Show(); 

Dank!

EDIT:

ohne eine der folgenden Lösungen, funktioniert dieser Code fein:

WebBrowserTask browser = new WebBrowserTask(); 
browser.URL = "http://www.youtube.com/results?search_query=Windows+Phone+7&aq=f"; 
browser.Show(); 

Ich verstehe nicht, was anders ist?

+0

Nun ja, ein großen Unterschied ist, dass Ihre URL unescaped Zeichen im Abfragezeichenfolgeflag und die YouTube-URL funktioniert nicht hat. – Josh

Antwort

5

Es gibt einen Fehler mit dem SDK. In der URL, die & enthält, müssen Sie es umgehen.

Zum Beispiel:

... Uri.EscapeDataString("&") + "ShowTime=8:00p"

3

Dies ist höchstwahrscheinlich, weil Ihre Abfrage-String-Parameter nicht URL-codiert sind. Moderne Webbrowser versuchen zu kompensieren, wenn Sie das in die Adressleiste einfügen, da es schwierig ist, URL-Encoding in Ihrem Kopf durchzuführen. Aber wenn Sie eine API verwenden, sollten Sie diese Stücke wirklich URL-encodieren.

die Uri.EscapeDataString Methode können einzeln jeden Teil des Abfrage-String kodieren. Beispielsweise.

string url = "http://www.symfonee.com/Improv/addison/comedians/Bio.aspx" + 
    "?ShowDate=" + Uri.EscapeDataString("12/15/10") + 
    "&ShowTime=" + Uri.EscapeDataString("8:00p") + 
    "&Uid=" + Uri.EscapeDataString("54918a0d-1beb-4552-bdc8-2d474e3ea5ae"); 
+0

Sie können die gesamte URL nur URL kodieren - ich habe dies getan, und es funktioniert gut, können Sie versuchen, entweder Methode erforderlich, wenn, wenn dies nicht – RoguePlanetoid

+0

In diesem speziellen Fall nicht funktioniert, die in Ordnung sein können, aber ich finde das obige Verfahren viel sauberer, insbesondere wenn es sich nicht um konstante Werte handelt, was wahrscheinlich in jedem realen Code der Fall ist. Wenn einer der Werte beispielsweise ein & oder? dann funktioniert die URL-Codierung der gesamten URL nicht wie erwartet. – Josh

+0

Danke, aber es funktioniert nicht. Das Gleiche passiert. – Carlo

0

Ihr URI muss in der Tat geflüchtet werden. Als einfacher Weg denke ich ist:

string url = "http://www.symfonee.com/Improv/addison/comedians/Bio.aspx?ShowDate=12/15/10&ShowTime=8:00p&Uid=54918a0d-1beb-4552-bdc8-2d474e3ea5ae"; 

WebBrowserTask browser = new WebBrowserTask(); 
browser.URL = Uri.EscapeUriString(url); 
browser.Show(); 
+0

Danke, aber es funktioniert auch nicht. – Carlo

+0

Siehe bitte bearbeiten. – Carlo

1

Der folgende Code für mich gearbeitet:

s = "www.. "; //url 
s = Uri.EscapeUriString(s); 
task.URL = HttpUtility.UrlEncode(s);