Страница 1 из 1
асинхронный hhtp запрос
Добавлено: 05 апр 2012, 12:01
ilgiz_vafin
Всем привет.
Подскажите пожалуйста как реализовать асинхронный вызов
Код: Выделить всё
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(uri);
HttpResponse response = httpclient.execute(request);
Re: асинхронный hhtp запрос
Добавлено: 05 апр 2012, 12:51
damager82
Можно так.
onclick - обработчик нажатия кнопки, которая запускает процесс
Код: Выделить всё
public class MainActivity extends Activity {
TextView tv;
Handler h = new Handler();
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
}
public void onclick(View v) {
// запускаем новый поток, для асинхронного выполнения задачи runnabl
new Thread(runnabl).start();
}
// задача runnabl
Runnable runnabl = new Runnable() {
public void run() {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
try {
URI uri = new URI("http://www.ya.ru");
request.setURI(uri);
// меняем TextView через Handler, т.к. напрямую нет доступа
h.post(new Runnable() {
public void run() {
tv.setText("Start!");
}
});
HttpResponse response = httpclient.execute(request);
// меняем TextView через Handler
h.post(new Runnable() {
public void run() {
tv.setText("Done!");
}
});
} catch (URISyntaxException e) {
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
}
};
}
Re: асинхронный hhtp запрос
Добавлено: 05 апр 2012, 14:16
ilgiz_vafin
А нет возможности сделать callback метод по аналогии с c#?
Re: асинхронный hhtp запрос
Добавлено: 05 апр 2012, 15:26
damager82
ilgiz_vafin писал(а):А нет возможности сделать callback метод по аналогии с c#?
Вот тут не подскажу, ибо с c# не знаком вообще. Возможно, кто-нить другой ответит.
Re: асинхронный hhtp запрос
Добавлено: 05 апр 2012, 15:51
ilgiz_vafin
В любом случае спасибо. А вообще это хорошая практика вот так на каждый запрос создавать новый поток?
Re: асинхронный hhtp запрос
Добавлено: 09 апр 2012, 09:06
damager82
ilgiz_vafin писал(а):В любом случае спасибо. А вообще это хорошая практика вот так на каждый запрос создавать новый поток?
Хороший вопрос. Думаю, да. Так делается в учебниках. И насколько я знаю, Java-thread завершается, когда выполняет свой run.
Тут надо архитектуру Java очень хорошо знать, чтобы точно ответить.
Re: асинхронный hhtp запрос
Добавлено: 09 апр 2012, 12:57
ilgiz_vafin
damager82 писал(а):ilgiz_vafin писал(а):В любом случае спасибо. А вообще это хорошая практика вот так на каждый запрос создавать новый поток?
Хороший вопрос. Думаю, да. Так делается в учебниках. И насколько я знаю, Java-thread завершается, когда выполняет свой run.
Тут надо архитектуру Java очень хорошо знать, чтобы точно ответить.
Добрый день.
Я попробовал реализовать метод
Код: Выделить всё
public abstract T execute (HttpUriRequest request, ResponseHandler<? extends T> responseHandler)
где responseHandler, как я понял и является callback-функцией.
Re: асинхронный hhtp запрос
Добавлено: 09 апр 2012, 13:57
andev
damager82 писал(а):
И насколько я знаю, Java-thread завершается, когда выполняет свой run.
добавлю, что отслеживать это можно в Eclipse на Perspective Debug, вкладка Debug, там все потоки отображаются.
Re: асинхронный hhtp запрос
Добавлено: 02 сен 2012, 20:51
neoksi
А как в поток получить данные из UI элементов?
UPD: все разобрался сам.