2012-04-13 10 views
1

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; 
    } 
} 

}

答えて

1

これを試してみてください。..

Thread r = new Thread(){ 
public void run(){ 
    //post request 
} 

}.start(); 
+0

からの呼び出し10秒間続く。 – NyanLH

+0

@ニャンLH ..しかし、あなたは心配する必要はありません..アンドロイドでマルチタスキングは良いです...今あなたはリクエストを送信して、サーバーが応答するのを待っていません。そのデータとそれを知っていることは、**送信**のすべての部分です。スレッドは、その操作が成功したことを知る必要があります.. – ngesh

+0

私はあなたに同意しますが、私の考えは技術的に可能かどうかまだ不思議です。 :] – NyanLH

0

それはあなたを助けることができる場合、私は一緒にアンドロイドのための非同期のHTTP操作ライブラリを入れている、参照してください。あなたがASYN作ることができるのhttpは、私は、これは私のものよりもより良いアプローチだと思いますが、サーバーが非常に遅い場合と言うと、その後、スレッドを応答するために10秒を見てみましょう活動からかIntentService

https://github.com/nareshsvs/android-libraries

関連する問題