2012-10-15 52 views
6

我有一個特定的需求,即必須從我的活動中激活瀏覽器上的網址。我可以用下面的代碼來做到這一點:Android - 使用請求標頭的網址打開瀏覽器

String finalUrl = "http://localhost:7001/display/result.jsp?param=12345"; 
Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW, 
         Uri.parse(finalUrl)); 

現在,我想通過在請求中,把「PARAM」作爲一個請求頭,而不是作爲查詢字符串本身調用result.jsp中。

有人請指教?

感謝很多提前

編輯 即使在請求主體的「PARAM」 POST請求應該罰款。

編輯2 接受的答案是POST請求,而不是標題。

回答

14

Android瀏覽器支持「觀看」的javascript,例如下面的代碼可以啓動瀏覽器應用程序顯示一個警告對話框:

String finalUrl = "javascript:alert('hello')"; 
    Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW, 
          Uri.parse(finalUrl)); 
    startActivity(browserIntent); 

慣常的伎倆由JavaScript做術後是您創建一個由JavaScript形式,然後提交。所以理論上代碼像下面應該工作(部分代碼是從this post複製):

//String finalUrl = "http://localhost:7001/display/result.jsp?param=12345"; 
    String finalUrl = "javascript:" + 
     "var to = 'http://localhost:7001/display/result.jsp';" + 
     "var p = {param:'12345',param2:'blablabla',param3:'whatever'};"+ 
     "var myForm = document.createElement('form');" + 
     "myForm.method='post' ;" + 
     "myForm.action = to;" + 
     "for (var k in p) {" + 
      "var myInput = document.createElement('input') ;" + 
      "myInput.setAttribute('type', 'text');" + 
      "myInput.setAttribute('name', k) ;" + 
      "myInput.setAttribute('value', p[k]);" + 
      "myForm.appendChild(myInput) ;" + 
     "}" + 
     "document.body.appendChild(myForm) ;" + 
     "myForm.submit() ;" + 
     "document.body.removeChild(myForm) ;"; 
    Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW, 
          Uri.parse(finalUrl)); 
    startActivity(browserIntent); 
+0

作品精絕...由於一噸紫藤先生......我節省了大量的時間和壓力:) – Vinay

+0

偉大的工作紫藤。 –

+2

不適用於Chrome @ 4.2.2 – bluewhile

相關問題