Мне нужна помощь, потому что я врезался в ошибку каждый раз, когда я пытаюсь решить проблему. Я новичок в программировании на Android. Я хочу извлечь значение из определенного поля html-сайта. Это поле находится в форме и скрыто. Здесь находится html.
<form autocomplete="off" id="Form1" action="login.aspx" method="post" name="Form1">
<input type="hidden" value="" name="__EVENTTARGET">
<input type="hidden" value="" name="__EVENTARGUMENT">
<input type="hidden" value="dDwtMTg3MDkxXN199v0w==" name="__VIEWSTATE">
Я попытался написать некоторый код, но в настоящее время у меня есть ошибка с asynctask. Перед использованием asynctask приложение просто продолжало сбой, и я понял, что ошибка, возможно, что серверу требуется некоторое время, чтобы ответить, и это вызывает некоторые проблемы. Мой код следующий.
Цель состоит в том, чтобы отправить это значение с помощью имени пользователя и пароля с использованием метода post на сайт, а затем проверить, отправляет ли он и отправляет другие значения с помощью метода post.
Пожалуйста, помогите мне! СПАСИБО ТОН ДЛЯ ВАШЕГО ВРЕМЕНИ!
package com.example.parser;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Connection().execute();
//TextView myText = (TextView) findViewById(R.id.textView1);
//myText.setText("value =" + value);
textView1 = (TextView) findViewById(R.id.textView1);
// try {
// parsing();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public static void parsing(TextView textView1) throws IOException {
Document doc = Jsoup.connect(
"i have hidden my url :p ").get();
Elements value = doc.select("[name=__VIEWSTATE]");
textView1.setText("my value is" + value);
}
private class Connection extends AsyncTask {
@Override
protected Object doInBackground(Object... arg0) {
try {
parsing(textView1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
}
textView1.setText("my value is" + value)
вызывается из фонового потока. Вы должны назвать это из потока пользовательского интерфейса. В любом случае, связанный с сетью материал должен быть выполнен внутри doInBackgroud()
а связанный с UI материал, такой как textview.setText()
должен быть onPostExecute
методом onPostExecute
.
private class Connection extends AsyncTask<Void, Void , Elements> {
@Override
protected Elements doInBackground(Void... params) {
Elements value = parsing(textView1);
return value;
}
@Override
protected void onPostExecute(Elements value) {
super.onPostExecute(s);
textView1.setText("my value is" + value);
}
}