直接代码

类一

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. token和session的区别及其发展史

    其实token与session的问题是一种时间与空间的博弈问题, session是空间换时间,而token是时间换空间. 一.发展史 很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为 ...

  2. bzoj4987 Tree 树上背包

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4987 题解 一道还不错的题咯. 很容易发现一个结论:这 \(k\) 个点构成的一定是一个连通块 ...

  3. 多线程模拟生产者消费者示例之Lock

    public class Test { public static void main(String[] args) { List<String> list = new ArrayList ...

  4. HDU 6038 Function —— 2017 Multi-University Training 1

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  5. Java常用数据结构Set, Map, List

    1. Set Set相对于List.Map是最简单的一种集合.集合中的对象不按特定的方式排序,并且没有重复对象. 特点: 它不允许出现重复元素: 不保证和政集合中元素的顺序 允许包含值为null的元素 ...

  6. Nuget-Doc:Nuget 简介

    ylbtech-Nuget-Doc:Nuget 简介 1.返回顶部 1. NuGet 简介 2019/05/24 适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以创建.共享和 ...

  7. Jmeter 5.1 从excel读取数据执行接口自动化

    思路:数据在excel文件中进行维护,然后转换成csv格式,jme中读取数据执行: 1.将接口各数据在excel文件中进行维护,然后存为csv格式,我的数据如下: 2.jmeter脚本,配置csv文件 ...

  8. java 字符串的操作方法

    方法 作用 范例   indexOf() 找到第一个字符出现的位置,()以下标来判断,返回的是字符所在的下标 int  num = String.indexOf("字符")   l ...

  9. 测开之路二十六:Flask基础之最小web程序

    Flask中文文档:http://docs.jinkan.org/docs/flask/ 安装Flask库 选端口号的一种方法(避免和别人选的端口冲突,小于1024的时候重新选) 最小web程序 用1 ...

  10. 用shell脚本实现MongoDB数据库自动备份

    一.创建MongoDB备份目录 用来存放数据 mkdir -p /data/mongodb_bak/mongodb_bak_now mkdir -p /data/mongodb_bak/mongodb ...