【问题标题】:android get text from html hidden form fieldandroid从html隐藏表单字段中获取文本
【发布时间】:2014-04-17 08:02:08
【问题描述】:

这是我第一次在这里发帖。我有一个网站,它有一个隐藏的输入字段,如下所示:

<form autocomplete="off" id="Form1" action="login.aspx" method="post" name="Form1">
     <input type="hidden" value="" name="__EVENTTARGET">
     <input type="hidden" value="" name="__EVENTARGUMENT">
     <input type="hidden" value="dDwtMTg3MDkxXN199v0w==" name="__VIEWSTATE">

我希望能够从 name="__VIEWSTATE" 的字段中获取文本并将其存储到变量中。 所有这些都需要在 java 中为 android 应用程序执行。 有没有办法从 html 代码中获取这个值?我检查了该站点的 GET 方法并没有通过它传输值。问题是这个值会不时变化,我每次都必须获得新值。

【问题讨论】:

  • 为什么要使用 PostBack 信息设置名称?我理解的事件句柄是用于事件标签的。名称标签是 post 变量的 ID。

标签: android html forms


【解决方案1】:

你可以试试这个(跳出你的 HTML 代码格式正确...):

Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(params[0]);
final NodeList inputs = document.getElementsByTagName("input");
for(int index = 0; index <inputs.getLength(); index++)
{
    if(inputs.item(index).getUserData("name").equals("__VIEWSTATE"))
    {
        final String yourValue = (String) inputs.item(index).getUserData("value");
        break;
    }
}

【讨论】:

【解决方案2】:

假设您已获取页面的HTML 代码并且您想要获取特定字段的值,我建议您使用HTML 解析器,例如thisthis

另一方面,您的任务似乎非常简单,以至于使用外部工具过于矫枉过正,因此手动提取所需值可能就足够了:

Pattern matchPattern = Pattern.compile("name=\"__EVENTARGUMENT\"> <input type=\"hidden\" value=\"(.*?)\" name=\"__VIEWSTATE\">");
Matcher m = matchPattern.matcher(yourHTMLCode);
m.find();
String res = m.group(1);
// do something with 'res' containing the desired value

【讨论】:

  • 我使用了 jsoup 解析器,但现在我面临其他问题。代码似乎不起作用..你能找出问题吗?代码在这里link
【解决方案3】:

使用 Jsoup 进行 Java 和 Android 的 HTML 解析。它使所有工作变得容易。

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多