RxJava+Retrofit+OkHttp的使用
1.导入依赖
-
//RxJava
-
implementation 'io.reactivex:rxjava:1.1.3'
-
//RxAndroid
-
implementation 'io.reactivex:rxandroid:1.1.0'
-
//retrofit
-
implementation 'com.squareup.retrofit2:retrofit:2.0.0'
-
//retrofit依赖Gson
-
implementation 'com.squareup.retrofit2:converter-gson:2.0.0'
-
//OkHttp
-
implementation 'com.squareup.okhttp3:okhttp:3.2.0'
-
//retrofit依赖RxJava
-
implementation 'com.squareup.retrofit2:adapter-rxjava:2.0.0'
2.那我们的地址测试
随机头像输出 - 优启梦免费API数据接口调用服务平台 (uomg.com)https://api.uomg.com/doc-rand.avatar.html
3.根据我们的内容创建一个相对应的类
-
public class Data {
-
-
private int code;
-
private String imgurl;
-
-
public int getCode() {
-
return code;
-
}
-
-
public void setCode(int code) {
-
this.code = code;
-
}
-
-
public String getImgurl() {
-
return imgurl;
-
}
-
-
public void setImgurl(String imgurl) {
-
this.imgurl = imgurl;
-
}
-
-
}
4.编写我们的接口类
-
public interface DataService {
-
-
-
//get请求 , 不再调用原来的Call,而是采用 Observable
-
-
Observable<Data> getJsonData(; String sort, String json)
-
-
// //get请求
-
// @GET("api/rand.avatar")
-
// Call<Data> getJsonData(@Query("sort") String sort,@Query("format") String json);
-
}
5.编写工具类
-
public class RetrofitServiceManager {
-
-
private final OkHttpClient okHttpClient;
-
private final Retrofit retrofit;
-
-
private RetrofitServiceManager() {
-
-
//创建一个okHttpClient实例
-
okHttpClient = new OkHttpClient.Builder()
-
.connectTimeout(10, TimeUnit.SECONDS)//连接超时时间
-
.writeTimeout(30, TimeUnit.SECONDS)//设置写入操作超时时间
-
.readTimeout(30, TimeUnit.SECONDS)//设置读操作超时时间
-
.build();
-
-
//创建一个retrofit实例
-
retrofit = new Retrofit.Builder()
-
.client(okHttpClient)//设置使用okhttp网络请求
-
.baseUrl("https://api.uomg.com/")//设置服务器路径
-
.addConverterFactory(GsonConverterFactory.create())//添加转化库,默认是Gson
-
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//添加回调库,采用RxJava
-
.build();
-
-
}
-
-
-
private static class SingletonHolder {
-
private static final RetrofitServiceManager INSTANCE = new RetrofitServiceManager();
-
}
-
-
/*
-
* 获取RetrofitServiceManager
-
**/
-
public static RetrofitServiceManager getInstance() {
-
return SingletonHolder.INSTANCE;
-
}
-
-
-
public <T> T create(Class<T> service) {
-
return retrofit.create(service);
-
}
-
}
6.将我们的处理过程封装起来
-
public class HttpEngine {
-
-
private static DataService dataService = RetrofitServiceManager.getInstance().create(DataService.class);
-
-
/*
-
* 获取随机网络头像
-
* **/
-
public static void getDatatouxiang(String sort, String json, Observer<Data> observer) {
-
setSubscribe(dataService.getJsonData(sort, json), observer);
-
}
-
-
private static <T> void setSubscribe(Observable<T> observable, Observer<T> observer) {
-
observable.subscribeOn(Schedulers.io())
-
.subscribeOn(Schedulers.newThread())//子线程访问网络
-
.observeOn(AndroidSchedulers.mainThread())//回调到主线程
-
.subscribe(observer);
-
}
-
}
7.编写我们的main_activity类
-
public class MainActivity extends AppCompatActivity {
-
-
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
-
initData();//调用方法启动
-
}
-
-
private void initData() {
-
//调用封装好的retrofit请求方法
-
HttpEngine.getDatatouxiang("动漫女", "json", new Observer<Data>() {
-
-
public void onCompleted() {
-
Log.i("getAttributionTag()"," //完成");
-
}
-
-
public void onError(Throwable e) {
-
//失败
-
Log.i("retrofit==111=", "请求错误:" e.getMessage());
-
}
-
-
public void onNext(Data data) {
-
//成功
-
Log.i("retrofit==222=", data.getCode() "---" data.getImgurl());
-
}
-
-
});
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcceck
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13