直接代码

类一

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. java泛型通配符详解

    前言 泛型带来的好处 泛型中通配符 常用的 T,E,K,V,? ?无界通配符 上界通配符 < ? extends E> 下界通配符 < ? super E> ?和 T 的区别 ...

  2. java23种设计模式(五)--组合模式

    转载:https://www.cnblogs.com/V1haoge/p/6489827.html定义:所谓组合模式,其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,我认 ...

  3. LOJ3119. 「CTS2019 | CTSC2019」随机立方体 二项式反演

    题目传送门 https://loj.ac/problem/3119 现在 BZOJ 的管理员已经不干活了吗,CTS(C)2019 和 NOI2019 的题目到现在还没与传上去. 果然还是 LOJ 好. ...

  4. 我们为什么选择Ceph来建立块存储

    我们为什么选择Ceph来建立块存储?国内知名黑客组织东方联盟是这样回答的,卷管理器的大小和增长受到管理程序的驱动器补充的限制,与其他Droplet共享.一旦Droplet被摧毁,储存就会被释放.术语“ ...

  5. hive的数据定义之创建数据库和表

    1.对数据库的操作 create database hive_db //创建数据库hive_db create table hive_db.test(字段内容及其格式省略) //在数据库hive_db ...

  6. Linux命令"ls"进阶说明

    pwd:the current working directory cd -: return to the previous working directory Filenames that begi ...

  7. 基于Lucene查询原理分析Elasticsearch的性能

    前言 Elasticsearch是一个很火的分布式搜索系统,提供了非常强大而且易用的查询和分析能力,包括全文索引.模糊查询.多条件组合查询.地理位置查询等等,而且具有一定的分析聚合能力.因为其查询场景 ...

  8. 【LeetCode 60】第k个排列

    题目链接 [题解] 逆康托展开. 考虑康托展开的过程. K = ∑v[i]*(n-i)! 其中v[i]表示在a[i+1..n]中比a[i]小的数字的个数 (也即未出现的数字中它排名第几(从0开始)) ...

  9. 全面质量管理体系运转的基本方法 PDCA

    PDCA管理循环 PDCA循环作为全面质量管理体系运转的基本方法,其实是需要搜集大量数据资料,并综合运用各种管理技术和方法.全面质量管理活动的全部过程,就是质量计划的制订和组织实现的过程,这个过程就是 ...

  10. Centos7.4 配置之MySQL 8.0【转】

    首先查看Mysql最新版本, 此时,目前最新版本为8.0. 开始安装前需要一些准备工作. 1,将本地的MariaDB或者已经安装的MySQL其他版本卸载. (一)卸载本地的本地的MariaDB: 由于 ...