Android Http 包装器

Android Http Wrapper

我需要编写一个简单的 HTTP 包装器 以便在 android 上使用 Facebook SDK

我是 Android 的新手,我正在尝试使用教程,但我发现的所有内容都基于 HttpClient,即 already deprecated 和我不想开始使用具有弃用功能的 Android。

所以我的问题是,目前 HTTP 包装器的最佳实践是什么?

谢谢,

除非万不得已,否则不要重新发明轮子。

Volley is a great library使用。

Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Volley is available through the open AOSP repository.

如果你指的是DefaultHttpClient then all the libraries that you could use are wrappers around it.The other option is HttpURLConnection是Android框架的选择。

您始终可以使用像 OkHttp or Volley 这样的第三方库。他们也会处理向后兼容性,(HttpURLConenction 在 API 11 之前不可用)。

如果您打算构建特定于您的用途的骨架包装器,那么 HttpURLConnection 是合适的 choice.As 最佳实践,适用于 DefaultHttpConnection 的内容继续适用于此处。

您可以使用 Square 的 Retrofit 库进行网络操作。 http://square.github.io/retrofit/

您应该创建一个响应拦截器 class,如下所示。

public class YourWrapper implements Interceptor {
   @Override
   public Response intercept(Chain chain) throws IOException {
      Request request = chain.request();
      Response response = chain.proceed(request);
      // After you get response you can do what ever you want.
      // If you need you can re call same api with return     chain.proceed(newRequest);
   }
}

您可以将自定义响应拦截器 class 设置为 Rest Api,如下所示:

          OkHttpClient client = new OkHttpClient();
          client.interceptors().add(new YourWrapper());
          RestAdapter restAdapter = new RestAdapter.Builder().setLogLevel(RestAdapter.LogLevel.BASIC)
                                                             .setClient(new OkClient(client))
                                                             .setEndpoint(url).build();

将包装器响应拦截器设置为其余 api 后,当您首先获得 api 结果时,您的包装器将捕获响应,然后回调将捕获响应。

实际上我所做的是深入了解 facebook 文档,发现我可以使用 GraphRequest 与 facebook SDK 一起工作。

例如获取facebook好友列表是这样的:

    public void getFriendsList(AccessToken acccess_token) throws Exception {
    GraphRequest request = GraphRequest.newMyFriendsRequest(acccess_token,new GraphRequest.GraphJSONArrayCallback() {
        @Override
        public void onCompleted(JSONArray objects, GraphResponse response) {
            Type collectionType = new TypeToken<FaceBookProfile>(){}.getType();
            FaceBookProfile profile = GsonUtils.createGson().fromJson(response.getRawResponse(), collectionType);
        }
    }) ;
    request.executeAsync();
}

我还添加了 GSON 库以便能够直接解析 JSON 个对象

您可以通过将此代码添加到依赖项来实现:

dependencies {

编译'com.google.code.gson:gson:2.3' }