我有一个特定的要求,我必须从我的活动中在浏览器上触发一个URL。我可以使用以下代码执行此操作:
String finalUrl = "http://localhost:7001/display/result.jsp?param=12345";
Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse(finalUrl));
现在,我想通过在请求中传递'param'作为请求头而不是queryString本身来调用result.jsp。
有人可以提出建议吗?
提前多多感谢
修改 即使请求正文中带有'param'的POST请求也应该没问题。
编辑2 接受的答案是POST请求,而不是标题。
答案 0 :(得分: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);