如何使用不同的URL调用异步任务 [英] how to call async task with different url

查看:67
本文介绍了如何使用不同的URL调用异步任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用不同的URL调用asynctask.我有三个按钮,它们使用不同的URL在服务器上进行http发布,现在我可以使用一个URL调用asynctask,但是如何使用不同的url调用相同的函数.以下是我的asynctask类:

I need to call asynctask with different urls. i have three button, they do a http post to server with different urls, now i can call asynctask with one url but how can i call the same function with different urls.the following is my asynctask class:

private class Downloadfiles extends AsyncTask<URL, Integer, JSONObject>{

    @Override
    protected void onPostExecute(JSONObject jo) {
        try {
            cards = jo.getInt("cards");
            points = jo.getInt("points");
            cash = jo.getInt("cash");
        } catch (JSONException e1) {            
            e1.printStackTrace();
        }
        //cardsv.startAnimation(textio);
        cardsv.setText(""+cards);
        cashv.setText(""+cash);

        Log.e("wintype", "msg" + wintype);  
        super.onPostExecute(jo);
    }



    @Override
    protected JSONObject doInBackground(URL... params) {
        Log.e("msg++--", "play game method called");

        BufferedReader reader=null;
        data_to_send = "userId=" + userId ;

        try
        { 
           Log.e("inside try block playgame", "get text" + data_to_send);
          // Defined URL  where to send data
      URL url = new URL(playgame);
   // Send POST data request
    URLConnection conn = url.openConnection(); 
    conn.setDoOutput(true);                   
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data_to_send);
    wr.flush();     

    // Get the server response 
  reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  StringBuilder sb = new StringBuilder();
  String line = null;

  // Read Server Response
  while((line = reader.readLine()) != null)
      {
             // Append server response in string
             sb.append(line + "\n");
             Log.e("inside playgame", "while loop");
      }


  play_response = sb.toString();
  }
  catch(Exception ex)
  {
      Log.e("MyTag ", "Failure to get json data in playgame--1--", ex);
  }
  finally
  {
      try
      {

          reader.close();
      }

      catch(Exception ex) {
          Log.e("MyTag", "Failure to get json data in playgame--2--", ex);
      }
  }
  Log.e("play response from the server in ", "play game" + play_response);

  JSONObject jo = null;
try {
    jo = new JSONObject(play_response);
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


    return jo;
}

}

我用我的一个按钮点击它

and i am calling this with one of my buttons click

Downloadfiles download = new Downloadfiles();
 downloads.execute(); 

推荐答案

更改

private class Downloadfiles extends AsyncTask<URL, Integer, JSONObject>{

private class Downloadfiles extends AsyncTask<String, Integer, JSONObject>{

并更改

@Override
    protected JSONObject doInBackground(URL... params) {
        Log.e("msg++--", "play game method called");

@Override
    protected JSONObject doInBackground(String... urls) {
       String url= urls[0];// get the URL String here

最后像

And Finally call the AsyncTask like

new Downloadfiles (this).execute(URL1);// For Button1

new Downloadfiles (this).execute(URL2);//For Button2 and so on

这篇关于如何使用不同的URL调用异步任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆