html parser android скрытое поле ввода

0

Мне нужна помощь, потому что я врезался в ошибку каждый раз, когда я пытаюсь решить проблему. Я новичок в программировании на 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;
        }
    }

}
Теги:
android-asynctask
parsing

1 ответ

0
Лучший ответ

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);
    }
}
  • 0
    Большое спасибо VEEEEERY. Я бы хотел проголосовать, но у меня нет необходимой репутации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню