1

ボタンクリックやページナビゲーションなどの使用状況ログをhttppost経由でサーバーに送信しています。現在、非同期タスク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;
    }
}

}

4

2 に答える 2

1

これを試して..

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

}.start();
于 2012-04-13T09:16:11.210 に答える
0

私はAndroid用の非同期http操作ライブラリをまとめました。それがあなたを助けることができるかどうか見てください。アクティビティまたはIntentServiceからasynhttp呼び出しを行うことができます

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

于 2012-04-13T09:59:19.640 に答える