我正在學習如何登錄網站,但是我仍然無法成功完成。Android:如何登錄網站
它似乎沒有成功登錄,因爲返回的html內容仍然是登錄頁面,而不是成功的登錄頁面。
我選擇了網站來練習,以下是我的核心代碼。非常感謝。
public class TestAyncTask extends AsyncTask<Void, Void, Void> {
private final String url = "http://dinbendon.net/do";
private DefaultHttpClient client;
private String CAPTCHA;
private String strResult;
public TestAyncTask() {
client = new DefaultHttpClient();
}
@Override
protected Void doInBackground(Void... params) {
initial(url);
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("username", "guest"));
list.add(new BasicNameValuePair("password", "guest"));
list.add(new BasicNameValuePair("result", CAPTCHA));
try {
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));
HttpResponse httpResponse = client.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
strResult = EntityUtils.toString(httpResponse.getEntity());
Log.d("Test", strResult);
}
List<Cookie> cookies = client.getCookieStore().getCookies();
for (int i = 0; i < cookies.size(); i++) {
Log.e("Test", cookies.get(i).getName() + ": " + cookies.get(i).getValue());
}
} catch (Exception e) {
Log.e("Test", e.toString());
}
return null;
}
private void initial(String url) {
int sum = 0;
try {
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
HttpEntity resEntity = response.getEntity();
InputStream is = resEntity.getContent();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader in = new BufferedReader(isr);
String line = "";
while ((line = in.readLine()) != null) {
if (line.contains("<td style=\"width: 6em;\" class=\"alignRight\">")) {
int start = line.indexOf("\">") + "\">".length();
int end = line.indexOf("=<", start);
String result = line.substring(start, end);
if (result.contains("加")) {
sum = Integer.valueOf(result.split("加")[0]) + Integer.valueOf(result.split("加")[1].split("等於")[0]);
} else if (result.contains("+")) {
sum = Integer.valueOf(result.split("\\+")[0]) + Integer.valueOf(result.split("\\+")[1]);
} else if (result.contains("+")) {
sum = Integer.valueOf(result.split("+")[0]) + Integer.valueOf(result.split("+")[1]);
} else {
Log.e("Test", "Not matched");
}
Log.e("Test", "sum: " + sum);
break;
}
}
} catch (Exception e) {
Log.e("Test", e.toString());
}
CAPTCHA = String.valueOf(sum);
}
@Override
protected void onPostExecute(Void result) {
textview.setText(strResult);
client.getConnectionManager().shutdown();
}
}
登錄成功...更改用戶名 - 密碼,不要用用戶名密碼登錄您的密碼 –
您能登錄嗎?使用相同的代碼?或者你改變了什麼?如果您登錄成功,登錄頁面將在html內容中包含「guest」關鍵字。客人/客人是由網站提供的帳戶。 – user3209403
是的,我登錄成功,我看到了客人的頁面。 –