2012-10-15 53 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

相关问题