2011-12-09 78 views
0

我在瀏覽器中打開某個網址時遇到了一些小問題。首先,我使用下面的代碼運行瀏覽器:Android網頁瀏覽器上的打開網址導致Google搜索

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(Globals.currentChatURL)); 
startActivity(Intent.createChooser(browserIntent, "Select browser:")); 

現在,如果我設置Globals.currentChatURL喜歡的東西http://www.google.com然後打開該站點就好了。但是我的URL有點複雜,因爲它包含了所有base64編碼的多個參數。以下是我的URL如何顯示的示例:

http://webportal.mysite.com/ChatProgram/chat.php? intgroup = UFYyMA == & INTID = UFYyMEZN &汞柱= Pw__ & PREF =用戶& EN = U0NPVFQgTUlMTEFS & EE = cGF1bGdAbWFnbmF0ZWNoLmNvbQ == & EQ = UFRWRkVI & EC = TUFHTkFURUNI

現在,如果我用我上面的代碼,試圖推出這個網址它帶給我的谷歌搜索頁面以下消息:

「您的搜索 - http://URLabove ...未找到任何文件」

然而,如果我複製網址並將其粘貼到地址欄它把我帶到了正確的位置。我怎樣才能解決這個問題??這一點的關鍵是讓用戶點擊按鈕並啓動網站,而不是讓用戶手動複製和粘貼網址。

任何建議將不勝感激。

非常感謝

回答

2

在您的http URI的查詢部分有不需要的等號。這些標誌具有&parameter=value形式的分隔符的特定含義。 這等號表示來自base64編碼的填充值(0,1或2)。

您可以

  • 刪除它們,因爲你的base64服務器解碼器不會打擾他們重建或

  • percent encode他們(與所有其他保留字符)。

在Android中,你可以使用百分比編碼是這樣的:

String value = URLEncoder.encode("annoying values with reserved chars &=#", "utf-8"); 
String url = "http://stackoverflow.com/search?q=" + value; 

RFC 2396現在已經過時,但這是URI.parse()是基於由the documentation說:

uriString與RFC 2396兼容,編碼的URI

+0

感謝milli上。效果很好,但是它已被棄用。 – PaulG

相關問題