Retrofit使用

工具類
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);
                    }
                });
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章