Android Http Wrapper

时间:2015-04-24 09:00:06

标签: android facebook http wrapper facebook-sdk-3.0

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

我对Android很新,我正在尝试使用教程,但我找到的所有内容都基于 HttpClient already deprecated而我不想开始使用Android已弃用功能。

所以我的问题是现在HTTP包装器的最佳实践是什么?

谢谢,

4 个答案:

答案 0 :(得分:0)

除非你必须,否则不要重新发明轮子。

Volley is a great library要使用。

  

Volley是一个HTTP库,可以为Android应用程序建立网络   更容易,更重要的是,更快。排球可以通过   打开AOSP存储库。

答案 1 :(得分:0)

如果您指的是DefaultHttpClient,那么您可以使用的所有库都是它的包装器。另一个选项是HttpURLConnection,它是Android框架的选择。

您可以随时使用第三方库,例如OkHttpVolley。它们也会兼顾向后兼容性(HttpURLConenction在API 11之前不可用)。

如果您计划构建特定于您的使用的骨架包装器,那么HttpURLConnection是一个合适的选择。至于最佳实践,适用于DefaultHttpConnection的内容将继续适用于此处。

答案 2 :(得分:0)

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

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

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

您可以将自定义响应拦截器类设置为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结果时,首先您的包装器将捕获响应,而您的回调将捕获响应。

答案 3 :(得分:0)

实际上我所做的是更深入地关注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&#39; }