我正在开发一个Android应用程序(我的第一个),它显示桌面站点的移动友好界面。问题是该站点的用户必须登录才能使他们能够看到站点的这些部分。
我不拥有该网站,也不以任何方式加入他们,但我想为自己的个人学习经历创建此应用程序,以及帮助该网站的社区。 p>
考虑到这一点,用于验证用户的登录表单可以通过由Invision Power Boards(例如:community.invisionpower.com)提供支持的站点论坛进行访问。我知道如何从移动应用程序的用户那里获取用户名和密码,但是如何将这些信息发送到论坛/网站上的登录表单,然后以编程方式“点击”登录按钮?
答案 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
。也可以通过这种方式找到用户名/通行证的详细信息。