工具类
package com.jia.dimensions_of_electricity.net;

import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;public class RetrofitApi {private static RetrofitApi instance;private Retrofit mRetrofit;private RetrofitApi() {mRetrofit=new Retrofit.Builder().baseUrl(UrlUtil.BASE_URL)//baseurl必须以/结尾.addConverterFactory(GsonConverterFactory.create())//添加数据解析器,即序列化器.addCallAdapterFactory(RxJavaCallAdapterFactory.create()).client(OkHttpUtil.okHttpClient)//指定http客户端.build();}public static RetrofitApi getInstance(){if (instance==null) {instance=new RetrofitApi();}return instance;}public <T> T creatApi(Class<T> cls){T t = mRetrofit.create(cls);return t;}

}

拼接网址

package com.jia.dimensions_of_electricity.net;import com.jia.dimensions_of_electricity.car.ShoppingCarBean;
import com.jia.dimensions_of_electricity.home.banner.BannerBean;
import com.jia.dimensions_of_electricity.home.list_information.ListBean;
import com.jia.dimensions_of_electricity.home.product_information.InformationBean;
import com.jia.dimensions_of_electricity.home.search_information.SearchBean;
import com.jia.dimensions_of_electricity.login.LoginBean;
import com.jia.dimensions_of_electricity.mine.myaddress.addaddress.AddAddressBean;
import com.jia.dimensions_of_electricity.mine.myaddress.addresslist.AddressListBean;
import com.jia.dimensions_of_electricity.mine.mycircle.CircleBean;
import com.jia.dimensions_of_electricity.mine.mycircle.deletecircle.DeleteCircleBean;
import com.jia.dimensions_of_electricity.mine.myfootprint.FootPrintBean;
import com.jia.dimensions_of_electricity.mine.myprofile.headpic.HeadPicBean;
import com.jia.dimensions_of_electricity.mine.myprofile.userInformation.UserInformationBean;
import com.jia.dimensions_of_electricity.mine.myprofile.usernick.UserNickBean;
import com.jia.dimensions_of_electricity.mine.myprofile.userpwd.UserPwdBean;
import com.jia.dimensions_of_electricity.mine.mywallet.WalletBean;
import com.jia.dimensions_of_electricity.register.RegisterBean;
import com.jia.dimensions_of_electricity.ufo.UfoBean;
import com.jia.dimensions_of_electricity.ufo.cancel.CancelBean;
import com.jia.dimensions_of_electricity.ufo.like.LikeBean;import java.io.File;import okhttp3.MultipartBody;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Part;
import retrofit2.http.Query;
import rx.Observable;public interface RetrofitService {//登录@POST(UrlUtil.USER_LOGIN_URL)@FormUrlEncodedObservable<LoginBean> login(@Field("phone") String phone,@Field("pwd") String pwd);//注册@POST(UrlUtil.USER_REGISTER_URL)@FormUrlEncodedObservable<RegisterBean> register(@Field("phone") String phone,@Field("pwd") String pwd);//banner@GET(UrlUtil.BANNER_URL)Observable<BannerBean> banner();//获取首页@GET(UrlUtil.HOME_PAGE_PRODUCT_INFORMATION_URL)Observable<InformationBean> information(@Query("page") int page);//我的足迹@GET(UrlUtil.MY_FOOT_PRINT_URL)Observable<FootPrintBean> footprint(@Query("page") int page, @Query("count") int count,@Header("sessionId")String sessionId,@Header("userId")int userId);//圈子列表@GET(UrlUtil.CIRCLE_LIST_URL)Observable<UfoBean> ufo(@Query("page") int page, @Query("count") int count,@Header("sessionId")String sessionId,@Header("userId")int userId);//我的圈子@GET(UrlUtil.MY_CIRCLE_URL)Observable<CircleBean> circle(@Query("page") int page, @Query("count") int count, @Header("sessionId")String sessionId, @Header("userId")int userId);//查询用户钱包@GET(UrlUtil.MY_WALLET_URL)Observable<WalletBean> wallet(@Query("page") int page, @Query("count") int count, @Header("userId")int userId, @Header("sessionId")String sessionId);//查询购物车@GET(UrlUtil.FIND_SHOPPING_CAR_URL)Observable<ShoppingCarBean> shoppingCar(@Header("userId")int userId, @Header("sessionId")String sessionId);//根据商品列表归属标签查询商品信息@GET(UrlUtil.FIND_COMMODITY_LIST_BY_LABEL)Observable<ListBean> commodityList(@Query("labelId") String labelId,@Query("page") int page, @Query("count") int count);//根据关键词查询商品信息@GET(UrlUtil.FIND_COMMODITY_BY_KEYWORD)Observable<SearchBean> search(@Query("keyword") String keyword,@Query("page") int page, @Query("count") int count);//收货地址列表@GET(UrlUtil.RECEIVE_ADDRESS_LIST)Observable<AddressListBean> addressList(@Header("userId")int userId, @Header("sessionId")String sessionId);// 新增收货地址@POST(UrlUtil.ADD_RECEIVE_ADDRESS)@FormUrlEncodedObservable<AddAddressBean> addAddress(@Field("realName") String realName,@Field("phone") String phone,@Field("address") String address,@Field("zipCode") String zipCode,@Header("userId") int userId,@Header("sessionId") String sessionId);//删除我发表过的圈子@DELETE(UrlUtil.DELETE_CIRCLE)Observable<DeleteCircleBean> deleteCircle(@Query("circleId") String circleId,@Header("userId")int userId, @Header("sessionId")String sessionId);//圈子点赞@POST(UrlUtil.ADD_CIRCLE_GREAT)@FormUrlEncodedObservable<LikeBean> like(@Field("circleId") int circleId,@Header("userId")int userId, @Header("sessionId")String sessionId);//取消点赞@DELETE(UrlUtil.CANCEL_CIRCLE_GREAT)Observable<CancelBean> cancel(@Query("circleId") int circleId,@Header("userId")int userId, @Header("sessionId")String sessionId);//用户上传头像@POST(UrlUtil.MODIFY_HEAD_PIC)@MultipartObservable<HeadPicBean> headPic(@Part MultipartBody.Part image, @Header("userId")int userId, @Header("sessionId")String sessionId);//修改昵称@PUT(UrlUtil.MODIFY_USER_NICK)@FormUrlEncodedObservable<UserNickBean> userNick(@Field("nickName") String nickName,@Header("userId")int userId, @Header("sessionId")String sessionId);//修改用户密码@PUT(UrlUtil.MODIFY_USER_PWD)@FormUrlEncodedObservable<UserPwdBean> userPwd(@Field("oldPwd") String oldPwd,@Field("newPwd") String newPwd,@Header("userId")int userId, @Header("sessionId")String sessionId);//根据用户ID查询用户信息@GET(UrlUtil.GET_USER_BY_ID)Observable<UserInformationBean> userInformation(@Header("userId")int userId, @Header("sessionId")String sessionId);
}

Model层使用

package com.jia.dimensions_of_electricity.mine.myprofile.userpwd;import com.jia.dimensions_of_electricity.net.RetrofitApi;
import com.jia.dimensions_of_electricity.net.RetrofitService;
import com.jia.dimensions_of_electricity.util.SpUtil;import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;public class UserPwdModel {public void userPwd(String oldPwd, String newPwd, final UserPwdCallBack userPwdCallBack){int userId = SpUtil.getInt("userId", -1);String sessionId = SpUtil.getString("sessionId", "");RetrofitService retrofitService = RetrofitApi.getInstance().creatApi(RetrofitService.class);Observable<UserPwdBean> userPwdBeanObservable = retrofitService.userPwd(oldPwd, newPwd, userId, sessionId);userPwdBeanObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<UserPwdBean>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {userPwdCallBack.onUserPwdCallBackFailure(e.getMessage());}@Overridepublic void onNext(UserPwdBean userPwdBean) {userPwdCallBack.onUserPwdCallBackSuccess(userPwdBean);}});}

}

Retrofit使用相关推荐

  1. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?

    OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...

  2. Retrofit 网络请求参数注解@Path @Field @Query 等使用

    请求参数呢大致如下,到个别人的图, 下面就说下这些内容使用 其中 @Path.@Query.@QueryMap 使用 Get 请求 , 加入使用了Post 请求注解使用@Path  一般都会是项目崩溃 ...

  3. retrofit 源码分析

    callAdater可以设置RxJava2CallAdapter,目前只可用这个adapter,支持rxjava2的操作:convertAdater可以使用多种进行操作. 调用例子: Retrofit ...

  4. Retrofit源码研究

    2016-05-06 15:35:27 最近抽空研究了一下Retrofit源码,包括API使用.源码结构.使用到的设计模式.SDK的架构设计.作者设计/实现思路等,会形成一系列文章. 以前Retrof ...

  5. java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) ---上

    工程结构 Androd studio 替代eclipse给我带来最大的感觉,就是不用每次需要用到什么类库,就得去网上下载一个jar包.只要在项目app/build.gradle中加入代码,就能远程使用 ...

  6. android 添加头参数,Retrofit添加header参数的几种方法

    (1)使用注解的方式 添加一个Header参数 publicinterfaceUserService { @Headers("Cache-Control: max-age=640000&qu ...

  7. Spring Boot 中的 RestTemplate不好用?试试 Retrofit !

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 六点半起床 来源 | juejin.im/post/68 ...

  8. 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听

    2019独角兽企业重金招聘Python工程师标准>>> 发表上篇文章 我一行代码都不写实现Toolbar!你却还在封装BaseActivity? 已是一个月前的事情~ 上篇文章的研究 ...

  9. java 获取动态的service_【Android】动态代理在 Retrofit 中的使用

    首先,什么是动态代理和为什么会有动态代理. 众所周知,Java 是一门静态语言,编写完的类,无法在运行时做动态修改. 一个简单的动态代理如下: 1.先定义一个接口,想要使用动态代理,必须先定义一个接口 ...

  10. Retrofit全攻略——进阶篇

    最近事比较多,距离上次写文章已经过去了一个月了.上一篇文章Retrofit全攻略--基础篇 介绍了Retrofit的基础用法,这篇文章介绍点进阶的用法. 打印网络日志 在开发阶段,为了方便调试,我们需 ...

最新文章

  1. zeroc ice php,ZeroC ICE+PHP整合
  2. 20135331 文艺 java实验
  3. 联想一体机电源键不亮_联想/兄弟打印机复印一体机激光器清洁教程
  4. 计算机程序备份,将应用程序快照备份到计算机
  5. 201计算机基础知识,201年计算机应用基础备考练习题及答案
  6. cobol和java区别,COBOL语法和文法(1)
  7. 团队文化之舒适区和挑战区
  8. PHP知识总结(一)
  9. 中缀表达式转化成后缀表达式
  10. Quartus 13.0安装教程
  11. 在线编程JavaScript
  12. C语言equivalent用法,C语言相当于'setw'函数
  13. vbs自动登陆115网盘代码
  14. Windows自动更新进程wuauclt.exe 进程服务关闭方法
  15. windows挂起进程方法介绍
  16. R 语言消除pdf图片的空白
  17. 在ADSP-BF561上使用x264(4):确认热点
  18. 如何提高推荐量?新手必知 头条号推荐机制
  19. WIN10 x64搭建OLLVM4.0 android NDK 编译环境跨坑指南
  20. sed正则表达式替换字符方法

热门文章

  1. 腾讯OD组织发展全景图.ppt
  2. 如何在20分钟内批量部署20台ESXi服务器?
  3. 从零起步的数据中心规划和建设
  4. 红帽高级总监谈 OpenJDK 的未来:Java 的未来从未如此光明
  5. Docker学习总结(31)——使用Maven插件构建docker镜像
  6. Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全
  7. python输入输出有问题_Python中的输入与输出
  8. php垂直居中代码_纯css实现水平和垂直居中
  9. java 多态 显式隐式,Java 构造器中的显式参数和this隐式参数
  10. 面试驱动技术 - Category 相关考点