только только начал изучать написать проги на платформе андроид. сразу начал писать нужную мне приложение ))
смотрел на видео уроки до 30 тем. Мне надо сначала написать авторизацию пользователя. Создал поля, получил данные. Теперь надо было отправить http запрос на сервер чтобы проверить логин пароль. Пользовался классом HttpUtility. На первый взгляд все было ясно, но когда начал запустить прогу вылетела ошибка android.os.NetworkOnMainThreadException. Искал и нашел что это из-за того что я вызвал Http запрос в main activity.
Нашел решение:
первое которое помогло но почему-то не советуют данное решение:
Код: Выделить всё
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}----------
пока искал ответ на этого вопроса продолжил работу вторым методом.
Код: Выделить всё
new Thread(new Runnable() {
public void run() {
String response = "Empty";
response = API.userInfo(5);//get user info width usid=5
Log.d("aaaa", "dd:" + response);
}
}).start();
Код: Выделить всё
new Thread(new Runnable() {
public void run() {
String response = "Empty";
response = API.userInfo(5);//get user info width usid=5
Log.d("aaaa", "dd:" + response);
}
}).start();нашел ещё один метод: AsyncTask.
но этот вообще хуже, в этом случае я должен был написать такой огромный код для каждого вызова функции парсера с сайта:
Код: Выделить всё
class MyTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.d("aaaa", "loading");
}
@Override
protected Void doInBackground(Void... params) {
//здесь вызов функции парсера
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Log.d("aaaa", "end");
}
}вообщем запутался и решил спросить. Каким образом правильно парсить с сайта?