我尝试使用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
现在所有测试并运行完整的代码,所以它确实有效。