为每个请求创建一个AsyncHttpClient,或为所有请求创建一个客户端

时间:2015-07-08 08:31:25

标签: android http request

我正在使用Android Asynchronous Http Client

哪一个是真的:为每个请求创建一个 <sequence key="{get-property('seqName')}"/> ,或为所有请求创建一个客户端。

现在我有一个AsyncHttpClient像这样:

Singltone RequestHelper

您可以看到我现在正在为每个请求创建private RequestHelper() { mContext = MyApplication.getContext(); baseUrl = mContext.getString(R.string.base_url); } public static RequestHelper getInstance() { if (instance == null) { instance = new RequestHelper(); } return instance; } public void performLoginRequest(String username, String password, GsonHttpResponseHandler gsonHttpResponseHandler) { AsyncHttpClient client = new AsyncHttpClient(); attachHeaders(client); client.post(mContext, baseUrl + "/login", null, "application/json", gsonHttpResponseHandler); } public void getCountries(GsonHttpResponseHandler gsonHttpResponseHandler) { AsyncHttpClient client = new AsyncHttpClient(); client.get(mContext, baseUrl + "/countries", null, gsonHttpResponseHandler); } 个对象

2 个答案:

答案 0 :(得分:0)

我认为为每个请求创建一个Asynctask更适合代码审查。我认为如果您管理每个案例并向AsyncTask提供正确的输入以让它知道它需要执行哪个函数,我们都可以完成。但是您可能以2000行类而不是10个200行的类来结束,并使用显式类名,所以任何时候你需要改变一些东西,你可能需要检查整个2000行,并在改变一些东西后,你需要确保你没有在课堂上打破任何东西。但这只是一个意见问题。

答案 1 :(得分:0)

从源链接上找到的这个示例中,可以为所有请求创建一个客户端。你可以多次使用它。

import com.loopj.android.http.*;

public class TwitterRestClient {
  private static final String BASE_URL = "http://api.twitter.com/1/";

  private static AsyncHttpClient client = new AsyncHttpClient();

  public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.get(getAbsoluteUrl(url), params, responseHandler);
  }

  public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.post(getAbsoluteUrl(url), params, responseHandler);
  }

  private static String getAbsoluteUrl(String relativeUrl) {
      return BASE_URL + relativeUrl;
  }
}

因此,答案是为所有请求创建一个客户端