私はそれらのスレッドを書きました:
Android で複数の Async タスクを効率的に管理する方法
複数の AsyncTasks を同時に実行する -- 不可能ですか?
しかし、私の質問に対する答えが見つかりませんでした。誰かが助けてくれるかもしれません..
ログインPOSTを作成してjson応答を取得するAndroidアプリがあります
。JsonがOKの場合、別のデータをPOSTして別の応答を取得する必要があります。
URLへの投稿を行う非同期クラスを拡張しました:
public class AsyncHttpPost extends AsyncTask<String, String, String> {
private HashMap<String, String> mData = null;
public AsyncHttpPost(HashMap<String, String> data) {
mData = data;
}
@Override
protected String doInBackground(String... params) {
byte[] result = null;
String str = "";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(params[0]);// in this case, params[0] is URL
try {
ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
Iterator<String> it = mData.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
nameValuePair.add(new BasicNameValuePair(key, mData.get(key)));
}
post.setEntity(new UrlEncodedFormEntity(nameValuePair, "UTF-8"));
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
result = EntityUtils.toByteArray(response.getEntity());
str = new String(result, "UTF-8");
}
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
catch (Exception e) {
return null;
}
return str;
}
@Override
protected void onPostExecute(String result) {
try {
JSONArray Loginjson = new JSONArray(result);
strStt = Loginjson.getJSONObject(0).getJSONObject("fields").getString("status");
if (strStt.equals("ERR")) {
ErrorMsg("Authentication failed");
} else if (strStt.equals("OK")) {
ErrorMsg("Login OK!!!");
ClientPage();
} else {
ErrorMsg("Connection Error");
}
} catch (JSONException e) {
ErrorMsg("Connection Error");
}
}
}
ここで、ステータスがエラーの場合、別の POST を取得する必要があります。別の非同期クラスを作成する必要がありますか? 同じすべての手順で?問題は onPostExecute 部分だけが異なることです..実際には「doInBackground」は常に同じです..
同じアクティビティで複数の投稿を簡単に行う方法はありますか?