[英]Android — How to programmatically log into website from a form
我正在编写的应用程序涉及从用户那里获取详细信息,并使用他们访问网站上的帐户。 我知道如何从用户那里获取详细信息,但是我不知道如何使用这些详细信息登录网站。 有谁知道我该如何在正确的框中输入这些详细信息? 提前致谢
您应该使用Webview来显示网页。 查看来自Google的官方示例: http : //developer.android.com/resources/tutorials/views/hello-webview.html
要填写正确的字段,请检查以下答案: 在Webview中自动填写字段
首先,您应该检查网站是否具有API。
如果他们没有API,
如果网站使用的是POST(最有可能的情况),则只需使用UrlEncodedFormEntity和HttpClient即可
HttpParams params = new BasicHttpParams();
HttpClient client = new DefaultHttpClient(params);
HttpPost post = new HttpPost("www.thewebsiteyouwanttosubmitto.com/post.php");
post.setEntity(new UrlEncodedFormEntity());
client.execute(post, new ResponseHandler(){});
使用Bookmarklets ,阅读登录页面的源代码,并弄清楚我们实际使用了哪些变量来存储变量,例如,如果用户名的'id'是'userName'而'name'密码是'pwd',则可以使用访问他们
document.getElementById('userName').value
和
document.getElementsByName(\"pwd\")[0].value
如果登录时要多一些回旋处,例如在sonicwall(我要使其自动化)的情况下,这些变量可能会被隐藏,那么您可以使用
document.standardPass.uName.value
这是使用上述代码的网页的某些部分,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
<form name="standardPass" onsubmit="return(processButn());" action="auth.cgi" method="POST" target="authTgtFrm">
<div id="login_box" align="left">
<div class="vgap85"></div>
<div id="error_box" style="visibility:hidden;">
<div id="error_text">
</div>
</div>
<div id="admin_reauth_text" style="visibility:hidden;">
Please enter your password to begin management:
</div>
<div id="username_line">
<div class="fieldName">
Username:
</div>
<div class="fieldValue">
<input type="text" id="userName" name="userName" value="" maxlength="32" autocomplete="off" style="width: 180px;">
</div>
</div>
<div class="vgap8"></div>
<div id="password_line">
<div class="fieldName">
Password:
</div>
<div class="fieldValue">
<input type="password" name="pwd" value="" maxlength="63" autocomplete="off" style="width: 180px;">
</div>
</div>
<div class="vgap8"></div>
<div id="language_line">
<div class="fieldName">
Language:
</div>
<div class="fieldValue">
<select name="select2">
<option>English</option>
</select>
</div>
</div>
<div class="vgap15"></div>
<div id="button_line">
<div class="fieldName">
</div>
<div class="fieldValue">
<input type="submit" name="Submit" value="Login" class="button" >
</div>
</div>
<div class="vgap8"></div>
<div id="sslvpn_enabled" style="visibility:hidden;">
<div class="fieldName">
</div>
<div class="fieldValue">
Click <a href="sslvpn" onClick="top.location.href='sslvpn'";>here</a> for sslvpn login
</div>
</div>
</div>
<input type="hidden" name="uName">
<input type="hidden" name="pass">
<input type="hidden" name="digest">
</form>
<noscript>
<center>
<font color="#FFFFFF"><font size="+1">Please turn on JavaScript to login.</font></font>
</center>
</noscript>
现在在android中使用webview加载身份验证页面,然后将您的bookmarklet加载到webview上。 在尝试使用Webview之前,先在PC中测试您的Bookmarklet。 确保使用浏览器控制台可以在该网站中访问变量(原始身份验证网站可能是其他网站( 框架
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.