我是网站源代码和Java的初学者,我正试图想出一种以编程方式访问某个网站的方法。我想出了登录/身份验证部分,但现在我陷入了相当容易的事情。我需要告诉Java从选项列表中进行选择,但我无法确定要为以下源代码发送的参数:
<FORM ACTION="/services/reinforce" METHOD="POST" onSubmit="return checkSubmit()">
<INPUT TYPE="hidden" NAME="call1" VALUE="search">
<TABLE CLASS="Data_table" summary="Select an option"width="100%"><CAPTION class="ctext">Search: </CAPTION>
<TR>
<TD CLASS="default"><LABEL for=input_id><SPAN class=fvisible>Options</SPAN></LABEL>
<SELECT NAME="val_num" SIZE="1" ID="optionId">
<OPTION VALUE="">None
<OPTION VALUE="1">Option 1
<OPTION VALUE="2">Option 2
<OPTION VALUE="3">Option 3
<OPTION VALUE="4">Option 4
<OPTION VALUE="5">Option 5
<OPTION VALUE="6">Option 6
<OPTION VALUE="7">Option 7
...
例如,如果我想选择选项1,我通常会做的是
String data = URLEncoder.encode("val_num", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");
不知怎的,它正在工作,它没有返回FileNotFoundException,但是它将我重定向到另一个链接。当我在任何浏览器中手动执行它时它工作正常,它将我重定向到Option1。什么可能是错的?
答案 0 :(得分:2)
您是否也在发送与隐藏输入元素对应的参数。
String data = "call1=search&val_num=1";
(注意,当您可以清楚地看到该字符串仅包含URL安全字符时,无需进行URL编码。)
此外,我假设您将此数据字符串传递给POST请求(而不是GET请求)。这是对的吗?
答案 1 :(得分:1)
这是一张清单:
/services/reinforce
发送了POST请求?checkSubmit()
JavaScript函数是否对表单的input / select / textarea元素进行了任何更改?如果是这样,您需要模拟使用POST请求发送的数据中的这些更改。 (可能有助于编辑您的问题并添加checkSubmit()
功能的来源。)application/x-www-form-urlencoded
?Cookie
标题?data
是POST请求的内容正文吗?call1=search
身体?也许隐藏的领域也是必要的。User-Agent
标题?