http postを使用してボタンのクリックやページのナビゲーションなどの使用状況ログをサーバーに送信しています。今はasynctask doInBackgroundを使用していますが、サーバーが応答するまで、doInBackgroundメソッドは終了しません。レスポンスを待たずに使用ログをサーバーに送信する最も良い方法は何ですか
質問:HTTPポストを送信し、サーバーからの応答を無視する方が良いですか?しかし、私はサーバーがログを記録することを確認する必要があります。
private static class Async extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
String url = "server url";
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("username", "password"));
HttpPost httppost = new HttpPost(url);
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("DeviceOS", "Android"));
nameValuePairs.add(new BasicNameValuePair("OSVersion", osVersion));
nameValuePairs.add(new BasicNameValuePair("DeviceManufacturer", manufacturer));
nameValuePairs.add(new BasicNameValuePair("Model", model));
// and some more
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
} catch (ClientProtocolException e) {
// Error msg will be here = e.getMessage();
} catch (IOException e) {
// Error msg will be here = e.getMessage();
}
return null;
}
}
}
からの呼び出し10秒間続く。 – NyanLH
@ニャンLH ..しかし、あなたは心配する必要はありません..アンドロイドでマルチタスキングは良いです...今あなたはリクエストを送信して、サーバーが応答するのを待っていません。そのデータとそれを知っていることは、**送信**のすべての部分です。スレッドは、その操作が成功したことを知る必要があります.. – ngesh
私はあなたに同意しますが、私の考えは技術的に可能かどうかまだ不思議です。 :] – NyanLH