如何使用不同的URL调用异步任务 [英] how to call async task with different url
本文介绍了如何使用不同的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屋!
查看全文