使用POST提交表单,但改变行动?

时间:2013-05-01 13:29:41

标签: javascript forms http-post

我尝试使用Java提交表单,如下所示:

<form id="bForm" action="/a/b.php" method="POST"></form>

没有<input type="hidden">,甚至根本没有<input>。 在源代码中,我看到当我单击链接时提交此表单 像这样执行javascript代码:

javascript:b(<k>,<v>)

其中<k><v>是某些键,值由一些数字组成。

现在,源中的函数b()是:

function b(value, key) {
        var form = document.getElementById('bForm');
        form.action = '/b/user/' + key + '/' + value + '.txt';
        form.submit();
}

我尝试接收的是.txt文件作为响应发送,但尝试直接打开

http://<url>.com/b/user/<key>/<value>.txt 

在浏览器中没有得到.txt文件,但是有一条消息说它必须使用POST方法访问。

现在,我读到了如何通过POST发送请求(也是尝试查找 解决方案)并认为我最了解。尽管如此,我今天只阅读了大部分内容,包括哪些形式,如果解决方案很明显,请原谅。 我在这里遇到的问题是没有我可以传递的参数&#34;让URL知道&#34;提交表格时要采取的行动。

现在我可能无法更改表单的操作,我该怎么办? 我可以以某种方式&#34;连接&#34;通过&#34; POST&#34;?到达.txt文件的URL 或者我是否需要以某种方式执行javascript,如果是这样的话?

编辑: 我现在已经解决了这个问题,不确定我的解释是否不够好,但解决方案看起来很简单,我对表格不够了解。 因此,action = #myurl#表示将表单提交给#myurl#,而不是当前页面。并且,虽然目标URL似乎指向某个文件,该文件无法对提交的表单执行任何操作,但这是不对的。事实上,它指向一个脚本,但脚本是&#34;隐藏&#34;我们只能在URL中看到要下载的文件的路径。 所以,我刚刚这样做了:

URL url = new URL("http://myurl.com/b/user/" + key + "/" + value + ".txt");
HttpURLConnection c = (HttpURLConnection) url.openConnection();
//set User-Agent, Cookie, etc. properties here
c.setRequestMethod("POST");
c.setInstanceFollowRedirects(false); //not sure if this is needed
InputStream in = c.getInputStream(); //this submits the parameter-less form
//now I can get the response with this stream, i.e. read & save the .txt file

现在所有测试并运行完整的代码,所以它确实有效。

0 个答案:

没有答案