从html获取隐藏的字段值

时间:2013-12-17 16:18:00

标签: java html

我正在编写一个获取html页面并从隐藏字段中提取值的程序。但是当我回应时我没有这个领域,所以我无法从中提取价值。

这是html的一部分:

<form class="important" method="post" action="/do">
    <button class="important" type="submit">do</button>
    <input type="hidden" value="123" name="abc">
</form>

以下是我如何提取:

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet("http://localhost/do");
HttpResponse response = httpclient.execute(request);

BufferedReader rd = new BufferedReader(
                new InputStreamReader(response.getEntity().getContent()));
StringBuilder result = new StringBuilder();
String line = "";
while ((line = rd.readLine()) != null) {
        result.append(line);
}
System.out.println(result.toString());

我得到的结果是

<form class="important" method="post" action="/do">
    <button class="important" type="submit">do</button>        
</form>

如您所见,我无法从该字段中提取数据 有什么办法可以实现吗?

1 个答案:

答案 0 :(得分:1)

这有两种可能性。

1)隐藏字段仅显示某些HTTP请求。

这意味着如果某些条件为真,服务器将仅呈现该标记。例如,HTTP VERB可能必须是POST,必须存在某个HTTP标头,必须存在某个URL参数,或者必须提供某个cookie值。如果您无法查看服务器代码,最简单的诊断方法是使用Fiddler。这允许您查看导致所需行为的原始HTTP请求,然后尝试使用Java复制请求。

2)服务器根本没有生成隐藏字段。

这意味着有问题的HTML内容不是从服务器永远生成的。验证这一点的最简单方法是在浏览器中使用右键单击&gt;查看页面源查看HTML源代码。这将包括服务器呈现的 HTML内容。如果相关的HTML代码不存在,则表明代码可能是使用JavaScript动态生成的。确认这一点的另一种方法是禁用JavaScript并查看代码是否仍存在于DOM资源管理器中。如果是这种情况,那么 意味着客户端生成隐藏输入所需的信息是在某处在页面上。然后,您将能够解析HTML并以另一种方式获取此信息,实质上是重写首先生成隐藏输入的客户端代码。