Android 尝试登录网站…有点困惑
下面的程序一直在B点输出原始登录页的源代码。为什么会发生这种情况?我怎样才能着手解决这个问题?要把该上来的下一个网页的资料Android 尝试登录网站…有点困惑,android,html,http,login,Android,Html,Http,Login,下面的程序一直在B点输出原始登录页的源代码。为什么会发生这种情况?我怎样才能着手解决这个问题?要把该上来的下一个网页的资料 <form method="POST" name="logonform" action="/check-443/logon.logonform" autocomplete="off"> <input type="hidden" name="CDT" value="12313"> <i
<form method="POST" name="logonform" action="/check-443/logon.logonform" autocomplete="off">
<input type="hidden" name="CDT" value="12313">
<input type="hidden" name="NEW_PASSWORD" value="">
<tr>
<td class="content">
<label for="User">Username</label>
</td>
<td>
<input type="text" name="LOGON" id="id" value="" size="15" maxlength="15">
</td>
</tr>
<tr>
<td class="content">
<label for="pass">Password:</label>
</td>
<td>
<input type="password" name="PASSWORDS" id="pw" value="" size="15">
</td>
</tr>
<tr>
<td>
<input type="submit" value="Log In">
</td>
</form>
用户名
密码:
我的代码似乎不起作用(我在网上看到了这一点,认为这可能是适用的)
HttpClient-HttpClient=newdefaulthttpclient();
HttpPost HttpPost=新的HttpPost(“https://abc.cba.com");
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“id”、“用户名”);
nameValuePairs.add(新的BasicNameValuePairs(“pw”),“****”);
添加(新的BasicNameValuePair(“登录”、“登录”);
试一试{
UrlEncodedFormEntity p_entity=新的UrlEncodedFormEntity(nameValuePairs);
httppost.setEntity(p_entity);
HttpResponse response=httpclient.execute(httppost);
HttpEntity=response.getEntity();
int status_code=response.getStatusLine().getStatusCode();
如果(状态代码>=300){
Log.d(“asf”,“Error”);//点A***************
返回false;
}否则{
Log.d(“asf”,EntityUtils.toString(entity));//点B***************
返回true;
}
}捕获(异常uee){}
返回false;
尝试将这些隐藏的输入字段(CDT、新密码)添加到nameValuePairs中,看看这是否有什么不同。不记得是否需要“登录”,也可以尝试删除它。尝试将这些隐藏的输入字段(CDT、新密码)添加到nameValuePairs中,看看这是否有什么不同。不记得是否需要“登录”,也可以尝试删除它。为了使用客户端而不是HTML登录页面“登录”,您需要将登录表单数据发布到表单所处的位置
在这种情况下,您应该从客户端发布到“/check-443/logon.logonform”,以便像web表单一样工作(当前表单将数据发布到web表单)
我建议您访问并重新了解表单。为了使用客户端而不是HTML登录页面“登录”,您需要将登录表单数据发布到表单所处的位置
在这种情况下,您应该从客户端发布到“/check-443/logon.logonform”,以便像web表单一样工作(当前表单将数据发布到web表单)
我建议你去复习一下你对表格的理解。@Chris:谢谢你清理这篇文章。我不知道怎么贴。@Chris:谢谢你清理这篇文章。我不知道如何发布它。我是否要输入字段id或名称?这就是stackoverflow.com/questions/8853070/explaining-http-post-response发生的情况。您应该使用“name”属性。你好像在用“身份证”。之前没有注意到,但也将其切换为“名称”。我添加了cdt号码,顺便说一句,每次刷新时,cdt号码都会不断变化。。。。。我添加了一个标题“/check-443/logon.logonform”,它现在表示请求不正确。我有点困惑,到底是怎么回事?我没有输入字段id或名称?这就是stackoverflow.com/questions/8853070/explaining-http-post-responseYou应该使用“name”属性。你好像在用“身份证”。之前没有注意到,但也将其切换为“名称”。我添加了cdt号码,顺便说一句,每次刷新时,cdt号码都会不断变化。。。。。我添加了一个标题“/check-443/logon.logonform”,现在它说的是错误的请求,我有点困惑,在登录后会出现一个对话框……啊……我怎么能让它点击OK呢。我应该在哪里找到更多关于它的信息对话框意味着你正在使用JavaScript打开一个
AlertDialog
的浏览器中查看它。如果您只是通过响应检索HTML,则不会出现对话框。当我查看它时,代码会显示以下内容:…[内容]…正在处理。。。这是否意味着登录成功,或者我必须单击某个东西才能使其进入onLoad?这意味着您必须通读并理解reDirect()函数中的javascript,然后在应用程序中复制它。你需要的关于Javascript的所有信息都可以在w3schools上找到。我在登录后会弹出一个对话框……啊啊啊啊……我怎么能让它点击OK呢。我应该在哪里找到更多关于它的信息对话框意味着你正在使用JavaScript打开一个
AlertDialog
的浏览器中查看它。如果您只是通过响应检索HTML,则不会出现对话框。当我查看它时,代码会显示以下内容:…[内容]…正在处理。。。这是否意味着登录成功,或者我必须单击某个东西才能使其进入onLoad?这意味着您必须通读并理解reDirect()函数中的javascript,然后在应用程序中复制它。你所需要的关于Javascript的所有信息都可以在W3学校获得。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://abc.cba.com");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "Username"));
nameValuePairs.add(new BasicNameValuePair("pw", "*****"));
nameValuePairs.add(new BasicNameValuePair("Log In", "Log In"));
try {
UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nameValuePairs);
httppost.setEntity(p_entity);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
int status_code = response.getStatusLine().getStatusCode();
if (status_code >= 300) {
Log.d("asf", "Error"); //POINT A***************
return false;
} else {
Log.d("asf", EntityUtils.toString(entity)); //POINT B***************
return true;
}
} catch (Exception uee){}
return false;