工具類
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)
@FormUrlEncoded
Observable<LoginBean> login(@Field("phone") String phone,@Field("pwd") String pwd);
//註冊
@POST(UrlUtil.USER_REGISTER_URL)
@FormUrlEncoded
Observable<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)
@FormUrlEncoded
Observable<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)
@FormUrlEncoded
Observable<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)
@Multipart
Observable<HeadPicBean> headPic(@Part MultipartBody.Part image, @Header("userId")int userId, @Header("sessionId")String sessionId);
//修改暱稱
@PUT(UrlUtil.MODIFY_USER_NICK)
@FormUrlEncoded
Observable<UserNickBean> userNick(@Field("nickName") String nickName,@Header("userId")int userId, @Header("sessionId")String sessionId);
//修改用戶密碼
@PUT(UrlUtil.MODIFY_USER_PWD)
@FormUrlEncoded
Observable<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>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
userPwdCallBack.onUserPwdCallBackFailure(e.getMessage());
}
@Override
public void onNext(UserPwdBean userPwdBean) {
userPwdCallBack.onUserPwdCallBackSuccess(userPwdBean);
}
});
}
}