我需要编写一个简单的 HTTP包装,以便在Android上使用 Facebook SDK 。
我对Android很新,我正在尝试使用教程,但我找到的所有内容都基于 HttpClient already deprecated
而我不想开始使用Android已弃用功能。
所以我的问题是现在HTTP包装器的最佳实践是什么?
谢谢,
答案 0 :(得分:0)
Volley是一个HTTP库,可以为Android应用程序建立网络 更容易,更重要的是,更快。排球可以通过 打开AOSP存储库。
答案 1 :(得分:0)
如果您指的是DefaultHttpClient,那么您可以使用的所有库都是它的包装器。另一个选项是HttpURLConnection,它是Android框架的选择。
您可以随时使用第三方库,例如OkHttp或Volley。它们也会兼顾向后兼容性(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; }