Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例

1.创建一个接口,用来定义接口使用的

public interface Api {
 @POST("product/getProductDetail")
 Observable<Goods_Bean> getGoods(@QueryMap Map<String,String> map);
 @POST("product/addCart")
 Observable<Add_Bean> getAdd(@QueryMap Map<String,String> map);
 @POST("product/getCarts")
 Observable<Query_bean> getShopCar(@QueryMap Map<String,String> map);
}

注意导包时要是用的是io包,路径是使用注解的形式,通过Java的反射的机制

2.创建一个拦截器

/**
 * 自定义拦截器.使用的是okhttp来定义的拦截器
 */
public class MyInterceptor implements Interceptor {
 @Override
 public Response intercept(Chain chain) throws IOException {
 Request request = chain.request();
 HttpUrl httpUrl = request
  .url()
  .newBuilder()
  .addQueryParameter("source", "android")
  .build();
 Request requestNew = request
  .newBuilder()
  .url(httpUrl)
  .build();
 return chain.proceed(requestNew);
 }
}

3.创建一个封装类

public class RetrofitUtil {
 public static volatile Retrofit instance;
 public static Retrofit getInstance(String baseUrl){
 if (instance==null){
  synchronized (RetrofitUtil.class){
  //拦截器
  OkHttpClient client = new OkHttpClient.Builder()
   .addInterceptor(new MyInterceptor())
   .build();
  //创建retrofit对象
  instance = new Retrofit.Builder()
   .baseUrl(baseUrl)
   .client(client)
   .addConverterFactory(GsonConverterFactory.create())
   .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
   .build();
  }
 }
 return instance;
 }
} 

以上这篇Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 浅谈RxJava+Retrofit+OkHttp 封装使用
  • Android中的Retrofit+OkHttp+RxJava缓存架构使用
  • 深入浅出RxJava+Retrofit+OkHttp网络请求
  • RxJava+Retrofit+OkHttp实现文件上传
(0)

相关推荐

  • 浅谈RxJava+Retrofit+OkHttp 封装使用

    背景 之前学习完Retrofit+Rxjava之后写了一篇关于封装的博客,发出后受到大家的关注以及使用,由于不断的完善之前的项目,所以决定把最新的项目封装过程讲解出来,供大家查看! Retrofit介绍: Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdapter,Converter,你可以使用不同的请求适配器(Ca

  • RxJava+Retrofit+OkHttp实现文件上传

    背景 在实际运用中上传是一个必不可少的功能,所以我们在封装二的基础上加入上传的功能,同时需要附带上传进度! 效果 实现 1.定义service接口 注意:Multipart是指定大文件上传过程中的标示,一般上传图片的过程中我们需要附带信息,所以我们需要用到@part指定传递的数值,MultipartBody.Part是指定传递的文件: /*上传文件*/ @Multipart @POST("AppYuFaKu/uploadHeadImg") Observable<BaseResul

  • 深入浅出RxJava+Retrofit+OkHttp网络请求

    浅谈RxJava+Retrofit+OkHttp 封装使用之前发出后收到很多朋友的关注,原本只是自己学习后的一些经验总结,但是有同学运用到实战当中,这让我很惶恐,所有后续一直更新了很多次版本,有些地方难免有所变动导致之前的博客有所出入,正好最近受到掘金邀请内测博客,所以决定重新写一版,按照最后迭代完成的封装详细的讲述一遍,欢迎大家关注! 注意:由于本章的特殊性,后续文章比较长而且复杂,涉及内容也很多,所以大家准备好茶水,前方高能预警. 简介: Retrofit: Retrofit是Square

  • Android中的Retrofit+OkHttp+RxJava缓存架构使用

    RxJava如何与Retrofit结合 先扔出build.gradle文件的内容 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxand

  • Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例

    1.创建一个接口,用来定义接口使用的 public interface Api { @POST("product/getProductDetail") Observable<Goods_Bean> getGoods(@QueryMap Map<String,String> map); @POST("product/addCart") Observable<Add_Bean> getAdd(@QueryMap Map<Stri

  • AngularJS中的拦截器实例详解

    AngularJS中的拦截器实例详解 异步操作 有时候需要在拦截器中做一些异步操作.幸运的是, AngularJS 允许我们返回一个 promise 延后处理.它将会在请求拦截器中延迟发送请求或者在响应拦截器中推迟响应. 下面是项目中用到的代码. ZbtjxcApp.factory('myHttpInterceptor', ['$q', '$window','$location', function($q, $window,$location) { return { // 全局响应 'respo

  • Vue2.0 axios前后端登陆拦截器(实例讲解)

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐使用axios.前段时间第一次在项目里用到vue,关于登陆问题,这里写一下心得. 首先后端: import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.lovnx.gateway.po.User; import javax.servlet.http.HttpServletRequest; import jav

  • 一文详解Java过滤器拦截器实例逐步掌握

    目录 一.过滤器与拦截器相同点 二.过滤器与拦截器区别 三.过滤器与拦截器的实现 四.过滤器与拦截器相关面试题 一.过滤器与拦截器相同点 1.拦截器与过滤器都是体现了AOP的思想,对方法实现增强,都可以拦截请求方法. 2.拦截器和过滤器都可以通过Order注解设定执行顺序 二.过滤器与拦截器区别 在Java Web开发中,过滤器(Filter)和拦截器(Interceptor)都是常见的用于在请求和响应之间进行处理的组件.它们的主要区别如下: 运行位置不同:过滤器是运行在Web服务器和Servl

  • 封装微信小程序http拦截器过程解析

    前言 微信小程序是数据驱动的应用,开发技术和vue.react和angular等mv*技术类似.在vue下可以用vue-resource.axios等模块进行http请求,但是在微信小程序上,http请求只支持wx.request(OBJECT),所以我们需要对wx.request进行封装,实现http拦截器的功能. 第一步:创建一个request.js文件 第二步:确定http.upload和websocket前缀 第三步:封装wx.request 在请求发出前处理http地址.请求头和参数.

  • Android编程开发实现多线程断点续传下载器实例

    本文实例讲述了Android编程开发实现多线程断点续传下载器.分享给大家供大家参考,具体如下: 使用多线程断点续传下载器在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度,在下载过程中记录每个线程已拷贝数据的数量,如果下载中断,比如无信号断线.电量不足等情况下,这就需要使用到断点续传功能,下次启动时从记录位置继续下载,可避免重复部分的下载.这里采用数据库来记录下载的进度. 效果图:   断点续传 1.断点续传需要在下载过程中记录每条线程的下载进度 2.每次下载开始之前先读取数据库

  • PHP的拦截器实例分析

    本文实例讲述了PHP的拦截器用法.分享给大家供大家参考.具体如下: PHP提供了几个拦截器,用于在访问未定义的方法和属性时被调用,如下所示: 1.__get($property) 功能:访问未定义的属性是被调用 2.__set($property, $value) 功能:给未定义的属性设置值时被调用 3.__isset($property) 功能:对未定义的属性调用isset()时被调用 4.__unset($property) 功能:对未定义的属性调用unset()时被调用 5.__call(

  • SpringBoot 过滤器与拦截器实例演示

       SpringBoot中的过滤器拦截器操作与springmvc中的几乎一样所以这里也不过多介绍了,下面举两个简单的栗子演示一下 1.过滤器         1 创建过滤器类LoginFilter,实现servlet包下的Filter接口(包不要导错),加入注解WebFilter package com.example.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.

  • Android OKHttp3拦截器的使用方法

    本文介绍了Android OKHttp3拦截器的使用方法,分享给大家,具体如下: 添加Interceptor 在上一篇中我们已经知道了okhttp的基本使用,其中在介绍OkHttpClient初始化的时候,介绍了两种方式,第二种方式就可以对这个OkHttpClient对象设置拦截器,如下所示: // 配置一些信息进入OkHttpClient mOkHttpClient = new OkHttpClient().newBuilder() .connectTimeout(REQUEST_TIME,

  • vue axios拦截器常用之重复请求取消

    引言 上一篇介绍了axios的简单封装,知道了axios拦截器的应用场景和方法,今天来看一下对于响应时间过长且请求次数过高的情况拦截器如何处理. 取消请求的方法 Axios使用内部提供的CancelToken来取消请求 官网示例1:用CancelToken.source工厂方法创建 cancel token,像这样 const CancelToken = axios.CancelToken; const source = CancelToken.source(); axios.get('/use

随机推荐