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--->......--->结 ...
随机推荐
- Vue:列表渲染 v-for on a <template>
类似于 v-if,你也可以利用带有 v-for 的 <template> 渲染多个元素.比如: <html> <head> <title>Vue v-f ...
- day20 python异常处理 try except
day20 python 一.异常处理 1.什么是异常, 常见异常有: 逻辑错误 ''' name Traceback (most recent call last): ...
- vue 字符串长度控制显示的字数超出显示省略号
1. html <p class="index__Feature-list-itemlist-title newline"> {{item.name| ellipsis ...
- 在项目中使用 Maven 私服
#在项目中使用 Maven 私服 在 Maven settings.xml 中添加 Nexus 认证信息(servers 节点下): <server> <id>nexus-re ...
- maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明
POM中配置的如下: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId> ...
- tensorflow函数介绍(2)
参考:tensorflow书 1.模型的导出: import tensorflow as tf v1=tf.Variable(tf.constant(2.0),name="v1") ...
- boost bimap
The library Boost.Bimap is based on Boost.MultiIndex and provides a container that can be used immed ...
- Git 如何删除分支
- sqlserver2008锁表语句详解(锁定数据库一个表)
锁定数据库的一个表 复制代码代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 复制代码代码如下: SELECT * FROM tab ...
- 连载 3:利用 matlab计算卷积