Android Retrofit的使和封装
来源:互联网 发布:amarra for mac 编辑:程序博客网 时间:2024/06/07 20:00
Retrofit是Square开发的一个Android和Java的REST客户端库。这个库非常简单并且具有很多特性,相比其他的网络库,更容易让初学者快速掌握。它可以处理GET、POST、PUT、DELETE…等请求,还可以使用picasso加载图片,Retrofit 2.0底层依赖OkHttp实现,也就是说Retrofit本质上就是对OkHttp的更进一步封装。Retrofit和其它Http库最大区别在于通过大范围使用注解简化Http请求。
在 build.gradle 文件中添加依赖,在 Manifest.xml文件中添加所需的网络权限。
整个网址:http://gank.io/api/data/Android/10/1
接口:
在 build.gradle 文件中添加依赖,在 Manifest.xml文件中添加所需的网络权限。
// build.gradlecompile 'com.squareup.retrofit:retrofit:2.0.1-beta2'compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'// AndroidManifest.xml<uses-permission android:name="android.permission.INTERNET" />下面就是对Retrofit的进行的一个网络请求的封装:
package http;import retrofit2.GsonConverterFactory;import retrofit2.Retrofit;public class HttpUtils { private static volatile HttpUtils instance; private Retrofit retrofit; private Class service; private HttpUtils() {} public HttpUtils(String baseurl) { retrofit = new Retrofit.Builder() .baseUrl(baseurl) .addConverterFactory(GsonConverterFactory.create()) .build(); } public static HttpUtils getInstance(String baseurl) { if(instance == null) { synchronized (HttpUtils.class) { if(null == instance) { instance = new HttpUtils(baseurl); } } } return instance; } public static HttpUtils getInstance() { if(null == instance) { return getInstance("http://gank.io/api/data/Android/"); } return instance; } public Retrofit getRetrofit() { return retrofit; } public <T> void create(Class<T> cls) { service = (Class) retrofit.create(cls); } public Class getService() { return service; }}封装好后,还需要写一个接口用来回调,接口中要用注解来决定使用什么请求方式,下面代码中我使用了Get请求,在括号中写写入网络地址的请求数据。
整个网址:http://gank.io/api/data/Android/10/1
接口:
package http;import java.util.List;import Bean.Catetory;import Bean.MessBean;import retrofit2.Call;import retrofit2.http.GET;public interface ApiService { @GET("10/1") Call<MessBean<List<Catetory>>> getCatetory();}接下来在说一说如何使用封装好的Retrofit:
//调用封装好的Retrofit(HttpUtils)来获取retrofit,通过retrofit.create(写接口名.class)//在通过接口调用接口内方法获取数据集合,然后用数据集合.enqueue进行异步任务.retrofit = HttpUtils.getInstance().getRetrofit(); ApiService apiService = retrofit.create(ApiService.class); Call<MessBean<List<Catetory>>> getCatetory = apiService.getCatetory(); getCatetory.enqueue(new Callback<MessBean<List<Catetory>>>() { @Override public void onResponse(Call<MessBean<List<Catetory>>> call, Response<MessBean<List<Catetory>>> response) { MessBean<List<Catetory>> body = response.body(); List<Catetory> results = body.getResults(); } @Override public void onFailure(Call<MessBean<List<Catetory>>> call, Throwable t) { } });
阅读全文
0 0
- Android Retrofit的使和封装
- Retrofit和RxJava的封装
- 关于Android高性能Restful请求的通用封装(单Retrofit和Retrofit+RxJava)
- Rxjava 和 Retrofit 的封装使用
- RxJava2和Retrofit Http请求的封装
- Retrofit和OkHttp简单的二次封装
- Retrofit封装和使用
- Retrofit的使用封装
- Retrofit+Rxjava的封装
- Retrofit的简单封装
- Retrofit的简单封装
- retrofit的封装
- Retrofit的简单封装
- Retrofit的二次封装
- Android RxJava和Retrofit网络框架封装(一)
- Android RxJava+Retrofit完美封装
- Android RxJava+Retrofit完美封装
- Android开发---RxJava+Retrofit封装
- Http中 Post和 Get的区别
- EventBus模版
- 洛谷 P2570 [ZJOI2010]贪吃的老鼠
- CCPC FINAL 2017
- AndroidStudio上传Library到JCenter
- Android Retrofit的使和封装
- Codejam之Ratatouille
- ESP32 Linux开发环境搭建
- 数据结构之树的操作
- Atitit 人工智能目前的进展与未来 包含的技术 v3
- python 统计序列中元素的出现频度\统计英文文章的词频
- codeforces #422 C. Hacker, pack your bags!(贪心dp)
- 利用ScriptEngineManager实现字符串公式灵活计算
- GreenDao+ButterKnife+Retrofit+Fresco展示网络数据