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工具类的更多相关文章

  1. Retrofit+RxJava联网工具类

    在python 进程.线程 (一)中简单的说过,CPython中的GIL使得同一时刻只能有一个线程运行,即并发执行.并且即使是多核CPU,GIL使得同一个进程中的多个线程也无法映射到多个CPU上运行, ...

  2. Android开源项目发现--- 工具类快速开发篇(持续更新)

    1. Guava Google的基于java1.6的类库集合的扩展项目 包括collections, caching, primitives support, concurrency librarie ...

  3. Android开源项目发现--- 工具类数据库ORM篇(持续更新)

    orm的db工具类,简化建表.查询.更新.插入.事务.索引的操作 1. greenDAO Android Sqlite orm的db工具类 项目地址:https://github.com/greenr ...

  4. Android开源项目发现--- 工具类网络相关篇(持续更新)

    1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...

  5. Android开源项目大全 - 工具类

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

  6. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...

  7. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  8. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  9. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

随机推荐

  1. 使用Google Cloud Messaging (GCM),PHP 开发Android Push Notifications (安卓推送通知)

    什么是GCM? Google Cloud  Messaging (GCM) 是Google提供的一个服务,用来从服务端向安卓设备发送推送通知. GCM分为客户端和服务端开发. 这里我们只介绍服务端开发 ...

  2. CC3200底板测试-烧写CC3200-LAUNCHXL

    1. 拿到板子,先研究一下几个跳线帽的作用.我在底板上测到VCC_DCDC_3V3和VCC_BRD之间应该有一个跳线帽的,但是在原理上找不到. 2. LED灯的用途,测试的时候,发现这个灯有时候亮,有 ...

  3. JAVA FILE.renameTo跨文件系统移动文件失败

    遇到了FILE.renameTo跨文件系统移动文件失败的问题,应使用FILES.move()接口或在同一文件系统移动文件. FILE.renameTo接口说明: public boolean rena ...

  4. Python3.5+selenium(11)脚本模块化&参数化

    mail126.py脚本如下 from selenium import webdriver from time import sleep from model1 import Login driver ...

  5. MySQL☞lower函数

    lower(列名/字符串):将大写字母改成小写字母 格式: select  lower(列名/字符串)  from  表名 如下图:

  6. jmeter关联三种常用方法

    在LR中有自动关联跟手动关联,但在我看来手动关联更准确,在jmeter中,就只有手动关联 为什么要进行关联:对系统进行操作时,本次操作或下一次操作对服务器提交的请求,这参数里边有部分参数需要服务器返回 ...

  7. .net 使用com组件操作word遇到的一些问题

    1.警告: 方法“Microsoft.Office.Interop.Word._Document.Close(ref object, ref object, ref object)”和非方法“Micr ...

  8. 安装mysql-5.7.12-winx64

    之前安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑 1.mysql-5.7.12-winx64.zip下载 官方下载地址:http://dev.mysq ...

  9. 四:HDFS Snapshots

    1.介绍 HDFS快照保存某个时间点的文件系统快照,可以是部分的文件系统,也可以是全部的文件系统.快照用来做数据备份和灾备.有以下特点: 1.快照几乎是实时瞬间完成的 2.只有在做快照时文件系统有修改 ...

  10. 团队作业7——第二次项目冲刺(Beta版本)-第三篇

    1.工作分工: 团队成员 分工 郭达22120 项目整合,后台代码 刘德培44060 前台界面优化 石浩洋22061 前台界面优化 曾繁钦22056 前台界面优化.测试 孙斌22030 后台代码 2. ...