Rxjava Retrofix2 okhttp3网络框架自解(转)
直接代码
类一
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网络框架自解(转)的更多相关文章
- Android网络框架之Retrofit + RxJava + OkHttp 变化的时代
1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
Retrofit以其灵活的调用形式, 强大的扩展性著称. 随着RxAndroid的推出, Retrofit这样的可插拔式的网络框架因其可以灵活兼容各种数据解析器, 回调形式(主要还是RxJava啦)而 ...
- RxJava+Retrofit+OkHttp,一步一步封装网络框架;
使用RxJava+Retrofit+OkHttp,首先在build.gradle添加: compile 'com.squareup.okhttp3:okhttp:3.8.1' compile 'com ...
- Android 网络框架 Retrofit2
概述 Retrofit是一个OkHttp网络请求框架的封装库,Retrofit通过注解配置网络参数,可以按照我们的规则去构造实际的HTTP请求,能够灵活设置URL.头部.请求体.返回值等,是目前最优雅 ...
- Android网络框架比较
今天,公司需要为一个安卓app选择一个合适的网络框架,具体我了解,主要的安卓网络框架有okhttp,retrofit,android-async-http,volley. 查找网上的资料,大致可以得到 ...
- Android OKHttp网络框架
好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...
- Android网络框架OkHttp之get请求(源码初识)
概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...
- 关于Unity的网络框架
注:Unity 5.1里引入了新的网络框架,未来目标应该是WOW那样的,现在还只是个P2P的架子. 网络的框架,无非是如何管理网络数据的收发,通信双方如何约定协议.之前做的框架与GameObject无 ...
- 事件驱动之Twsited异步网络框架
在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......--->结 ...
随机推荐
- Sass-数字运算
在 Sass 运算中数字运算是较为常见的,数字运算包括前面介绍的:加法.减法.乘法和除法等运算.而且还可以通过括号来修改他们的运算先后顺序.和我们数学运算是一样的,一起来看个示例. .box { wi ...
- HTML基础 有序列表写个人收藏夹
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Mac brew 安装Postgres 开机自启动
以下所有命令在mac 终端执行 1.安装postgres brew install postgres 2.brew 安装的程序都可以在/usr/local/Cellar/下找到,去/usr/local ...
- easyapi
create database easyrec; #为easyrec初始化用户名跟密码grant index, create, select, insert, update, drop, delete ...
- java 大数运算,高精度模板
转自:https://blog.csdn.net/stffer/article/details/46382949 有修改 关于BigInteger类更详细的用法请移步官方文档 package prac ...
- 2025年VR虚拟现实技术将渗透人们日常生活
2025年VR虚拟现实技术将给人们带来什么好处?今年早些时候,虚拟现实VR游戏制造商Survios在广州一个非常大的购物中心内的一个小型灰色墙壁店面,通过AMC中心植入了其位置游戏市场上的第一面旗帜. ...
- python之 matplotlib模块之绘制堆叠柱状图
我们先来看一个结果图 看到这个图,我个人的思路是 1 设置标题 import numpy as np import matplotlib.pyplot as plt plt.title('Scores ...
- centos 6.5 配置 DNS
编辑 vi /etc/resolv.conf 修改 DNS nameserver 202.96.134.133 nameserver 202.96.128.86 nameserver 8.8.8.8 ...
- springboot+mybatis搭建web项目
使用idea+springboot+Mybatis搭建一个简单的web项目. 首先新建一个项目: 在这里选择Maven项目也可以,但是IDEA为我们提供了一种更方便快捷的创建方法,即Spring In ...
- Codeforces 831C--Jury Marks (思维)
题目链接:http://codeforces.com/problemset/problem/831/C 题意:有一位参赛选手,我们不知道他初始或最后的成绩,但是知道k次评审所加(减)的分数,以及n个在 ...