如何使用JSoup获取隐藏的输入值?

时间:2015-12-16 00:05:34

标签: java jsoup

我有数据

 Element input = doc.select("input[name=authenticity_token]").first();

 String auth_token = input.attr("value");

我试图用Jsoup选择它。

  try {
            $user->update(array(
              'group' => Input::get('group')
            ),'username',Input::get('username'));

            Session::flash('home','Your grup has been updated');
            Redirect::to('index.php');

          } catch(Exception $e) {
            die($e->getMessage());
          }

    <h3>1: Standard User</h3>
    <h3>2: Administrator</h3>
    <h3>3: Moderator</h3>
    <h3>4: Admin/Mod</h3>
      <form action="" method="post" autocomplete="off">
        <label for="group">Change Group to</label>
          <input type="number" name="group" id="group">
        <label for="username">for this username</label>
          <input type="text" name="username" id="username">
          <input type="submit" value="Change Group">
          <input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
      </form>

但这不起作用。

我在String auth_token =。

收到空指针异常
  

在crime.ic.Main.main(Main.java:2)的java.lang.NullPointerException

我做错了什么?

2 个答案:

答案 0 :(得分:1)

经过一番研究后,我想我知道这里会发生什么:您要加载的内容可能来自某些JavaScript,并且在页面加载时不可见/不存在。 JS的加载发生在此后填充数据到位,这不是Jsoup可以做到的。因此,这是Jsoup无法实现的。

我们需要的是模拟/自动加载JS。存在这样的工具。

我发现this answerthis question很有帮助。

答案 1 :(得分:0)

如果你检查这个demo,你会发现在这种情况下根本没有问题,选择了输入。

我相信可能有另一个具有相同名称且没有值的输入。如果不是这种情况,请在JSoup github页面上发布该问题。