Retrofit工具类
package com.example.week2.retrofitUtils;
import android.util.Log;
import com.example.week2.model.Contacts;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.www.gcyL157.com TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.www.tongqt178.com adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
苏青青:
作者:${lvf}
创建时间:${2018}${12}$
更改时间:2019/1/620:53
版本号:1
*/
public class Retofit {
private MyApiService myApiService1;
private Retofit(){
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient =www.meiwanyule.cn/ new OkHttpClient.Builder()
.readTimeout(20, TimeUnit.SECONDS)
.connectTimeout(20, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.addInterceptor(loggingInterceptor)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(Contacts.BASE_URL)
.client(okHttpClient)
.build();
myApiService1 = retrofit.create(MyApiService.class);
}
public static Retofit getInstance() {
return RetroHolder.retro;
}
private static class RetroHolder {
private static final Retofit retro = new Retofit();
}
public void get(String url, Map<String,String> map, final HttpListener listener){
Observer observer = new Observer<ResponseBody>() {
@Override
public void onCompleted() {
Log.e("onCompleted","onCompleted");
}
//网络处理失败
@Override
public void onError(Throwable e) {
Log.e("onError","onError"+e.getMessage());
if (listener != null) {
listener.onError(e.getMessage());
}
}
//网络处理成功
@Override
public void onNext(ResponseBody responseBody) {
Log.d("onNext","onNext");
if (listener != null) {
try {
listener.onSuccess(responseBody.string());
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
myApiService1.get(url, map)
.subscribeOn(Schedulers.io())//io就是子线程
//在主线程调用
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void post(String url,Map<String,String> map,final HttpListener listener){
Observer observer = new Observer<ResponseBody>() {
@Override
public void onCompleted() {
Log.e("onCompleted","onCompleted");
}
//网络处理失败
@Override
public void onError(Throwable e) {
Log.e("onError","onError"+e.getMessage());
if (listener != null) {
listener.onError(e.getMessage( www.qinlinyu.cn/ ));
}
}
//网络处理成功
@Override
public void onNext(ResponseBody responseBody) {
Log.d("onNext","onNext");
if (listener != null) {
try {
listener.onSuccess(responseBody.string());
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
myApiService1.post(url, map)
.subscribeOn(Schedulers.io())//io就是子线程
//在主线程调用
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public interface HttpListener {
void onSuccess(String jsonStr);
void onError(String error);
//Contacts类
package com.example.asus.bw_shop;
/**
苏青青:
作者:${lvf}
创建时间:${2018}${12}$
更改时间:2018/12/2919:59
版本号:1
*/
public class Contacts {
//总接口前缀
public static final String BASE_URL = “http://mobile.bwstudent.com/small/”;
//登陆
public static final String USER_REGISTER = “user/v1/register”;
//用户信息
public static final String USER_LOGIN = “user/v1/login”;
//轮播图
public static final String FLY_BANNER = "commodity/v1/bannerShow";
public static final String SY_SHOP= "commodity/v1/commodityList";
//圈子列表
public static final String CIRCLE_LIST= "circle/v1/findCircleList";
//商品列表加载更多
public static final String SHOP_MORE= "commodity/v1/findCommodityListByLabel";
public static final String KEY_SHOP= "commodity/v1/findCommodityByKeyword";
//MyApiService接口
package com.example.asus.bw_shop.utils;
import java.util.Map;
import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;
import rx.Observable;
/**
苏青青:
作者:${lvf}
创建时间:${2018}${12}$
更改时间:2018/12/2920:05
版本号:1
*/
public interface MyApiService {
@GET
Observable<ResponseBody> get(@Url String url, @QueryMap Map<String,String> map);
@POST
Observable<ResponseBody> post(@Url String url, @QueryMap Map<String,String> map);
//Model接口
package com.example.week2.model;
import java.util.Map;
创建时间:${2018}${12}$
更改时间:2018/12/308:58
版本号:1
*/
public interface Model {
void Request(String url, Map<String, String> map, Class cla, MyCallBack myCallBack);
Retrofit工具类的更多相关文章
- Retrofit+RxJava联网工具类
在python 进程.线程 (一)中简单的说过,CPython中的GIL使得同一时刻只能有一个线程运行,即并发执行.并且即使是多核CPU,GIL使得同一个进程中的多个线程也无法映射到多个CPU上运行, ...
- Android开源项目发现--- 工具类快速开发篇(持续更新)
1. Guava Google的基于java1.6的类库集合的扩展项目 包括collections, caching, primitives support, concurrency librarie ...
- Android开源项目发现--- 工具类数据库ORM篇(持续更新)
orm的db工具类,简化建表.查询.更新.插入.事务.索引的操作 1. greenDAO Android Sqlite orm的db工具类 项目地址:https://github.com/greenr ...
- Android开源项目发现--- 工具类网络相关篇(持续更新)
1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...
- Android开源项目大全 - 工具类
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
- Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)
csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...
- Android 开源控件与常用开发框架开发工具类
Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
随机推荐
- Win10 远程服务器版
朋友的电脑刚装了1803版的Win10,然后他用KMS_VL_ALL6.9激活了一下,竟然变成了一个奇怪的版本:“远程服务器版”!第一次见这玩意,还真稀罕.帮他研究了一下,发现KMS_VL_ALL在激 ...
- C# 组装XML传给webserver+XML 返回获取多个xml,根据多个XML 返回dataset类型
大致流程介绍: 传值给 webserver+XML ,得到webserver+XML多个返回值,组装成dataset形式返回 首先创建所需要的类型 DataSet ds = new DataSet() ...
- 「日常温习」Hungary算法解决二分图相关问题
前言 二分图的重点在于建模.以下的题目大家可以清晰的看出来这一点.代码相似度很高,但是思路基本上是各不相同. 题目 HDU 1179 Ollivanders: Makers of Fine Wands ...
- Android Test和Logcat
一 测试相关概念 是否有源码 黑盒测试: 测试工具 白盒测试: 对所有的源码特别熟悉 对特定的代码进行测试 都是编程 时间 单元测试(程序员) 模块测试 集成测试 系统测试 回归测试(改bug) 压力 ...
- MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)
关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...
- UniMelb Comp30022 IT Project (Capstone) - 2.Vuforia in Unity
2 Vuforia in Unity Tutorial: https://www.youtube.com/watch?v=X6djed8e4n0&t=213s Preparation: Dow ...
- PHP计算两个已知经纬度之间的距离
/** *求两个已知经纬度之间的距离,单位为千米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位千米 **/ privat ...
- 在使用Pipeline串联多个stage时model和非model的区别
train.csv数据: id,name,age,sex1,lyy,20,F2,rdd,20,M3,nyc,18,M4,mzy,10,M 数据读取: SparkSession spark = Spar ...
- 五:ResourceManager High Availability RM 高可用
RM有单点失败的风险,但是可以做HA. RMs HA通过master/standby这种结构实现,一个master是active的,其它standby是inactive的.可能通过命令行切换主备节点 ...
- Centos6配置开启FTP Server
vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...