Android(Java) - 如何为站点的用户进行身份验证?

时间:2013-03-01 06:06:48

标签: android authentication

我正在开发一个Android应用程序(我的第一个),它显示桌面站点的移动友好界面。问题是该站点的用户必须登录才能使他们能够看到站点的这些部分。

我不拥有该网站,也不以任何方式加入他们,但我想为自己的个人学习经历创建此应用程序,以及帮助该网站的社区。

考虑到这一点,用于验证用户的登录表单可以通过由Invision Power Boards(例如:community.invisionpower.com)提供支持的站点论坛进行访问。我知道如何从移动应用程序的用户那里获取用户名和密码,但是如何将这些信息发送到论坛/网站上的登录表单,然后以编程方式“点击”登录按钮?

1 个答案:

答案 0 :(得分:0)

首先,您必须决定是在浏览器中还是在代码中执行此操作。

在代码中,您可能需要像这样自动化HTTP帖子:

    // Start up your network connection
    URL url = new URL("http://www.asdf.com/someFormSubmissionPage);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("POST");
    connection.setDoInput(true);

    String userInfo = "username=bob&password=pass";
    connection.setRequestProperty("Content-Length", "" + userInfo.length());

    connection.setDoOutput(true);

    // Send the actual data
    OutputStream out = connection.getOutputStream();
    out.write(userInfo.getBytes(UTF_8));

    // Flush everything to the destination
    out.flush();
    out.close();

    BufferedReader connectionReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), UTF_8));
    String responseLine;
    // Collect the entire response
    while ((responseLine = connectionReader.readLine()) != null)
        response.append(responseLine);

此时,您可以通过响应执行某些操作,也可以保存服务器发送给您的cookie,或者您想要的任何内容。

作为替代方案,您可以打开WebView并为其指定一个类似http://www.asdf.com/someFormSubmissionPage?username=bob&password=pass

的地址

这会在用户登录的情况下为浏览器加注星标。

通过浏览器中的someFormSubmissionPage查看实际网站的登录页面,可以找到view source。也可以通过这种方式找到用户名/通行证的详细信息。