Android loopj asynchttpclient возвращает ответ

В одном из моих проектов я использую loopj asynchttpclient для связи с моим сайтом. Коммуникационная часть работает хорошо и также получает ответ

Моя деятельность выглядит как

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        WebRequest test=new WebRequest();
        test.callService();
}

Класс WebRequest как

public class WebRequest extends Activity {


    public void callService(){


        AsyncHttpClient client = new AsyncHttpClient();
        client.post("http://domain.com/dp/index.php", new AsyncHttpResponseHandler() {


            @Override
            public void onSuccess(String response) {
                Log.v("P",response);
            }

            @Override
            public void onFailure(Throwable e, String response) {
                 Log.v("PS",e.toString());
            }

    });
    }




}

Я не понимаю, как вернуть ответ на основное действие, чтобы я мог создать список из этого ответа.

Я новичок в этом, пожалуйста, помогите мне заранее спасибо


person ramesh    schedule 25.07.2013    source источник


Ответы (1)


В вашем классе WebRequest:

  • Я не думаю, что вы хотите, чтобы этот класс расширял Activity. Вы должны расширять Activity только тогда, когда создаете страницу для отображения в своем приложении. Вы просто хотите выполнить некоторый код, поэтому расширение Activity не требуется.
  • Измените метод службы вызовов на статический и примите AsyncHttpClient в качестве параметра.

Your WebRequest class should now look like this:

final class WebRequest {
    private AsyncHttpClient mClient = new AsyncHttpClient();
    public static void callService(AsyncHttpResponseHandler handler) {
        mClient.post("http://domain.com/dp/index.php", handler);
    }
}

В вашей основной деятельности:

Теперь все, что вам нужно сделать в своей основной деятельности, это вызвать статический метод следующим образом:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        WebRequest.callService(new AsyncHttpResponseHandler() {
            @Override
            public void onStart() {
                // Initiated the request
            }

            @Override
            public void onSuccess(String response) {
                // Successfully got a response
            }

            @Override
            public void onFailure(Throwable e, String response) {
                // Response failed :(
            }

            @Override
            public void onFinish() {
                // Completed the request (either success or failure)
            }
        });
}

Делайте все, что вам нужно, с представлениями в вашей деятельности в вышеупомянутых обратных вызовах. Надеюсь это поможет!

person ahaisting    schedule 30.07.2013
comment
Окей спасибо за комментарий. Итак, как вы сказали, мне нужно повторить код onStart, onSuccess, onFailure, onFilish во всех моих действиях, где бы я ни хотел вызвать веб-сервис. Правильно ? Предположим, на странице, если мне нужно 2-3 вызова, я хочу повторить приведенный выше код дважды или трижды. это ? - person ramesh; 31.07.2013
comment
Правильный. Я также добавлю, что вам не нужно реализовывать все методы обратного вызова, а только те, которые вам нужны. Часто я реализую только onSuccess() и onFailure(). Надеюсь, что это помогает и удачи! Если мой ответ помог вам, я был бы признателен, если бы вы отметили его как правильный ответ. Спасибо! - person ahaisting; 31.07.2013