在android中使用Async任务调用Web服务?

时间:2014-04-22 09:49:37

标签: android web-services android-asynctask

我有一个单独的Web服务类,我只需要传递响应方法,url和数据列表,这些数据是发出请求和获取响应所必需的。我在我的登录活动中将此Web服务称为此

JifWebService webServices = new JifWebService();
                webServices.Execute(RequestMethod.POST,
                        Jifconstant.LOGIN_URL, null, logindata);
                loginResponse = webServices.getResponse();
                loginResponseCode = webServices.getResponseCode();

在此登录数据中是一个包含一些数据的数组列表。现在我想使用异步任务在后台调用此Web服务。但我只是没弄错。我的Web服务逻辑是用完全不同的java文件编写的,它工作正常,但我想在异步任务中调用我的Web服务方法。enter code here

1 个答案:

答案 0 :(得分:6)

您可以尝试以下代码进行异步任务,并在 doInBackground 中调用网络服务:

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;

public class AsyncExample extends Activity{


private String url="http://www.google.co.in";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     new AsyncCaller().execute();
}


private class AsyncCaller extends AsyncTask<Void, Void, Void>
{
    ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        //this method will be running on UI thread
        pdLoading.setMessage("Loading...");
        pdLoading.show();
    }
    @Override
    protected Void doInBackground(Void... params) {

        //this method will be running on a background thread so don't update UI from here
        //do your long-running http tasks here, you don't want to pass argument and u can access the parent class' variable url over here


        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        //this method will be running on UI thread

        pdLoading.dismiss();
    }

    }
}

完成