直接代码

类一

public class Okhttp3Utils {
private static OkHttpClient mOkHttpClient;
public static OkHttpClient getOkHttpClient(){
if(null==mOkHttpClient){
mOkHttpClient=new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(30,TimeUnit.SECONDS)
.writeTimeout(30,TimeUnit.SECONDS)
.build();
}
return mOkHttpClient;
}
}
类二
public abstract class RetrofitUtils {
private static final String Api_Server="http://xxxxxxxxx:8080/";
private static Retrofit mRetrofit;
private static OkHttpClient nOkHttpClient;
public static Retrofit getRetrofit(){
if(null==mRetrofit){
if(null==nOkHttpClient){
nOkHttpClient=Okhttp3Utils.getOkHttpClient();
}
mRetrofit=new Retrofit.Builder()
.baseUrl(Api_Server)//设置服务器路径
.addConverterFactory(GsonConverterFactory.create())//添加转化库,默认是Gson
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//添加回调库,采用RxJava
.client(nOkHttpClient)//设置使用okhttp网络请求
.build();
}
return mRetrofit;
}
}
类三
public class NetWorks extends RetrofitUtils {
//创建实现接口调用
protected static final NetService service = getRetrofit().create(NetService.class);

private interface NetService{
//POST请求
@FormUrlEncoded
@POST("login/urls")
Observable<Verification> getVerfcationCodePost(@Field("tel") String tel,@Field("password") String pass);

//POST请求
@FormUrlEncoded
@POST("login/urls")
Observable<Verification> getVerfcationCodePostMap(@FieldMap Map<String, String> map);

//GET请求
@GET("login/urls")
Observable<Verification> getVerfcationGet(@Query("tel") String tel, @Query("password") String pass);

//GET请求,设置缓存
@Headers("Cache-Control: public," + CACHE_CONTROL_CACHE)
@GET("login/urls")
Observable<Verification> getVerfcationGetCache(@Query("tel") String tel, @Query("password") String pass);

//POST测试
@FormUrlEncoded
@POST("api/out/directBuy.php?act=DirectBuy")
Observable<GoodsBean> getVerfcationCodePostMap2(@FieldMap Map<String, String> map);
}
//POST 测试
public static void VisitCodePostMapText(Map<String,String> map, Observer<GoodsBean> observer){
setSubscribe(service.getVerfcationCodePostMap2(map),observer);
}

//POST 请求
public static void VisitCodePost(String tel, String password, Observer<Verification> observer){
setSubscribe(service.getVerfcationCodePost(tel,password),observer);
}

//POST 请求参数以map传入
public static void VisitCodePostMap(Map<String,String> map, Observer<Verification> observer){
setSubscribe(service.getVerfcationCodePostMap(map),observer);
}

//GET 请求设置缓冲
public static void VisitCodeGetCache(String tel, String password, Observer<Verification> observer){
setSubscribe(service.getVerfcationGetCache(tel,password),observer);
}

//GET 请求
public static void VisitCodeGET(String tel, String password, Observer<Verification> observer){
setSubscribe(service.getVerfcationGet(tel,password),observer);
}

public static <T> void setSubscribe(Observable<T> observable, Observer<T> observer){
observable.subscribeOn(Schedulers.io())
.subscribeOn(Schedulers.newThread())//子线程访问
.subscribeOn(Schedulers.newThread())//回调到主线程
.subscribe(observer);
}
}
类四
Activity直接掉用
private void text(){
Map<String, String> jsonMap = new HashMap<>();
jsonMap.put("u", "a");
jsonMap.put("p", "b");
jsonMap.put("id", "97");
NetWorks.VisitCodePostMapText(jsonMap, new Observer<GoodsBean>() {
@Override
public void onCompleted() {
Log.d("Main2Activity", "==onCompleted==");
}
@Override
public void onError(Throwable e) {
Log.d("Main2Activity", "==onError=="+e.toString());
}
@Override
public void onNext(GoodsBean goodsBean) {
Log.d("Main2Activity", "==verification=="+goodsBean.toString());
}
});
}
---------------------
作者:快逃
来源:CSDN
原文:https://blog.csdn.net/kuaittao/article/details/77946787
版权声明:本文为博主原创文章,转载请附上博文链接!

Rxjava Retrofix2 okhttp3网络框架自解(转)的更多相关文章

  1. Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

    1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...

  2. 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO

    Retrofit以其灵活的调用形式, 强大的扩展性著称. 随着RxAndroid的推出, Retrofit这样的可插拔式的网络框架因其可以灵活兼容各种数据解析器, 回调形式(主要还是RxJava啦)而 ...

  3. RxJava+Retrofit+OkHttp,一步一步封装网络框架;

    使用RxJava+Retrofit+OkHttp,首先在build.gradle添加: compile 'com.squareup.okhttp3:okhttp:3.8.1' compile 'com ...

  4. Android 网络框架 Retrofit2

    概述 Retrofit是一个OkHttp网络请求框架的封装库,Retrofit通过注解配置网络参数,可以按照我们的规则去构造实际的HTTP请求,能够灵活设置URL.头部.请求体.返回值等,是目前最优雅 ...

  5. Android网络框架比较

    今天,公司需要为一个安卓app选择一个合适的网络框架,具体我了解,主要的安卓网络框架有okhttp,retrofit,android-async-http,volley. 查找网上的资料,大致可以得到 ...

  6. Android OKHttp网络框架

    好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...

  7. Android网络框架OkHttp之get请求(源码初识)

    概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...

  8. 关于Unity的网络框架

    注:Unity 5.1里引入了新的网络框架,未来目标应该是WOW那样的,现在还只是个P2P的架子. 网络的框架,无非是如何管理网络数据的收发,通信双方如何约定协议.之前做的框架与GameObject无 ...

  9. 事件驱动之Twsited异步网络框架

    在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......--->结 ...

随机推荐

  1. Sass--混合宏--声明宏

    如果你的整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的.但当你的样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无法达到我们目了.这 ...

  2. java super与this关键字图解、java继承的三个特点

  3. Es学习第九课, 聚合查询和复合查询

    ES除了实现前几课的基本查询,也可以实现类似关系型数据库的聚合查询,如平均值sum.最小值min.最大值max等等 我们就用上一课的数据作为参考来举例 聚合查询 sum聚合 sum是一个求累加值的聚合 ...

  4. input框金额输入验证

    金额输入要求:只能是数字且小数点后保留两位小数 html <input type="text" min="10" id="dc-moneyInp ...

  5. Delphi fmx 找不到android设备解决办法

    刚接触到移动开发,很多不熟悉.配置好Android SDK后,​​如果​用模拟器来调试程序的话,那速度会让人崩溃,我用的Nexus7平板​​,插上电脑,开启USB调试,但奇怪在Delphi里就是找不到 ...

  6. .Net Core 使用 Swagger 提供API文档

    1.运行环境 开发工具:Visual Studio 2017 JDK版本:.NET Core 2.0 项目管理工具:nuget 2.GITHUB地址 https://github.com/nbfujx ...

  7. tom

    题目描述 众所周知,Tom 猫对香肠非常感兴趣.有一天,Tom 家里的女主人赏给了Tom 一大堆香肠.这些香肠太多了,以至于Tom 一顿吃不完,于是它把这些香肠串成了一棵树,树的每个节点上都有一个香肠 ...

  8. [CSP-S模拟测试]:赤壁情(DP)

    前赤壁赋 壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下.清风徐来,水波不兴.举酒属客,诵明月之诗,歌窈窕之章.少焉,月出于东山之上,徘徊于斗牛之间.白露横江,水光接天.纵一苇之所如,凌万顷之茫然.浩浩 ...

  9. iOS 获取全局唯一标示符

    这个方法用来产生一个唯一的标示符,每次调用都会不一样,所以可以用当作一些临时缓存文件的名字 NSString *identifier = [[NSProcessInfo processInfo] gl ...

  10. 小程序 js 判断 字符串 为空 null

    判断字符串是否为空 1 2 3 4 5 var strings = ''; if (string.length == 0) { alert('不能为空'); } 判断字符串是否为“空”字符即用户输入了 ...