Retrofit网络请求

来源:互联网 发布:日常工作安排软件 编辑:程序博客网 时间:2024/06/18 14:58
依赖    compile 'com.squareup.retrofit2:retrofit:2.0.1'    compile 'com.squareup.retrofit2:converter-gson:2.0.1'    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'    compile 'io.reactivex:rxandroid:1.1.0'    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'    compile 'com.jcodecraeer:xrecyclerview:1.3.2'    compile 'com.facebook.fresco:fresco:1.5.0'    compile 'org.greenrobot:greendao:3.2.0'    compile 'org.greenrobot:greendao-generator:3.2.0'    compile 'com.getbase:floatingactionbutton:1.10.1'RetrofitUtils代码

package test.bawie.fangjd.model.net;import android.util.Log;import java.util.concurrent.TimeUnit;import okhttp3.OkHttpClient;import okhttp3.logging.HttpLoggingInterceptor;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class RetrofitUtils {    private static RetrofitUtils retrofitUtils;    private RetrofitUtils(){    }    public static RetrofitUtils getInstance(){        if(retrofitUtils==null){            synchronized (RetrofitUtils.class){                if(retrofitUtils==null){                    retrofitUtils=new RetrofitUtils();                }            }        }        return retrofitUtils;    }    private static Retrofit retrofit;    public static synchronized Retrofit getRetrofit(String url){        HttpLoggingInterceptor httpLoggingInterceptor=new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {            @Override            public void log(String message) {                Log.i("xxx",message);            }        });        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);        OkHttpClient okHttpClient=new OkHttpClient.Builder()                .addInterceptor(httpLoggingInterceptor)                .connectTimeout(5000, TimeUnit.SECONDS)                .readTimeout(5000,TimeUnit.SECONDS)                .retryOnConnectionFailure(false)                .build();        if(retrofit==null){            retrofit=new Retrofit.Builder().baseUrl(url)                    .client(okHttpClient)                    .addConverterFactory(GsonConverterFactory.create())                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                    .build();        }        return retrofit;    }    public <T>T getApiService(String url,Class<T> cl){        Retrofit retrofit = getRetrofit(url);//得到retrofit        return retrofit.create(cl);//返回的就是网络接口对象    }}
ApiService代码(照猫画虎)
 
package test.bawie.fangjd.model.net;import okhttp3.MultipartBody;import okhttp3.RequestBody;import retrofit2.http.GET;import retrofit2.http.Multipart;import retrofit2.http.POST;import retrofit2.http.Part;import retrofit2.http.Query;import rx.Observable;import test.bawie.fangjd.model.bean.AddGoodsBean;import test.bawie.fangjd.model.bean.AddrsBean;import test.bawie.fangjd.model.bean.DeleteGoods;import test.bawie.fangjd.model.bean.FenYouBean;import test.bawie.fangjd.model.bean.FenYouMainBean;import test.bawie.fangjd.model.bean.GoodsBean;import test.bawie.fangjd.model.bean.GoodsCarBean;import test.bawie.fangjd.model.bean.ShangChuanBean;import test.bawie.fangjd.model.bean.SouSuoBean;import test.bawie.fangjd.model.bean.TianJiaBean;import test.bawie.fangjd.model.bean.UserinfoBean;public interface ApiService {    /**     * 结合Retrofit+RxJava     * https://www.zhaoapi.cn/product/getProductCatagory?cid=1     * @param     * @return     */    @GET("getProductCatagory")    Observable<FenYouBean> getNoParams(@Query("cid")int cid);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/product/getProducts?pscid=1     * @param     * @return     */    @GET("getProducts")    Observable<FenYouMainBean> getNoParams2(@Query("pscid")int pscid);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/product/getProductDetail?pid=1     * @param     * @return     */    @GET("getProductDetail")    Observable<GoodsBean> getNoParams3(@Query("pid")int pid);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/product/searchProducts?keywords=笔记本&page=1&source=android     * @param     * @return     */    @GET("searchProducts")    Observable<SouSuoBean> getsousuo(@Query("keywords")String keywords,@Query("page")int page,@Query("source")String source);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/user/getUserInfo?uid=552&token=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @GET("getUserInfo")    Observable<UserinfoBean> getuserinfo(@Query("uid")int uid, @Query("token")String token);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/product/addCart?uid=552&pid=965&token=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @GET("addCart")    Observable<AddGoodsBean> addgoods(@Query("uid")int uid,@Query("pid")int pid, @Query("token")String token);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/product/getCarts?uid=552&token=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @GET("getCarts")    Observable<GoodsCarBean> gouwucar(@Query("uid")int uid, @Query("token")String token);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/product/deleteCart?uid=72&pid=1&token=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @GET("deleteCart")    Observable<DeleteGoods> deletegoods(@Query("uid")int uid, @Query("pid")int pid, @Query("token")String token);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/user/getAddrs?uid=552&uid=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @GET("")    Observable<AddrsBean> getAddres(@Query("uid")String uid,@Query("token")String token);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/user/getAddrs?uid=552&uid=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @GET("addAddr")    Observable<TianJiaBean> tianjia(@Query("uid")int uid, @Query("addr")String addr,@Query("mobile")String mobile,@Query("name")String name,@Query("token") String token);    /**     * 结合Retrofit+RxJava     *https://www.zhaoapi.cn/user/getAddrs?uid=552&uid=4B5DAF274221936555E01E5F7BC271F4     * @param     * @return     */    @Multipart    @POST("file/upload")    Observable<ShangChuanBean> uploadPic(@Part("uid") RequestBody uid, @Part MultipartBody.Part file,@Part("token") RequestBody token);}
Api代码(照猫画虎)
package test.bawie.fangjd.model.net;public interface Api {    public static final boolean isOnline = false;//    public static  final String devIp = "http://120.27.23.105";    public static  final String devIp = "https://www.zhaoapi.cn";    public static final String workIp = "";    public static final String HOST = isOnline ? workIp : devIp;    public static final String LOGIN = HOST+"/user/login";    public static final String REG = HOST+"/user/reg";    public static final String USERINFO = HOST+"/user/getUserInfo";    public static final String SHOUYEGG = HOST+"/ad/getAd";    public static final String FENZUO = HOST+"/product/getCatagory";    public static final String FENYOU = HOST+"/product/";    public static final String FENYOUMAIN = HOST+"/product/";    public static final String GOODS = HOST+"/product/";    public static final String SOUSUO = HOST+"/product/";    public static final String USER = HOST+"/user/";    public static final String ADDGOODS = HOST+"/product/";    public static final String GWCAR = HOST+"/product/";    public static final String DELETE = HOST+"/product/";    public static final String ADDRES = HOST+"/user/getAddrs";    public static final String TIANJIA = HOST+"/user/addAddr";    public static final String DINGDAN = HOST+"/product/createOrder";    public static final String DAN = HOST+"/product/getOrders";    public static final String  GETFI= HOST+"/";    public static final String  ADDMM= HOST+"/user/setAddr";    public static final String  GETMM= HOST+"/user/getDefaultAddr";} Retrofit请求代码
Retrofit retrofit = RetrofitUtils.getRetrofit(Api.ADDGOODS);ApiService apiService = retrofit.create(ApiService.class);Observable<AddGoodsBean> observable = apiService.addgoods(uid, pid, token);observable.subscribeOn(Schedulers.io())        .observeOn(AndroidSchedulers.mainThread())        .map(new Func1<AddGoodsBean, AddGoodsBean>() {            @Override            public AddGoodsBean call(AddGoodsBean addGoodsBean) {                return addGoodsBean;            }        }).subscribe(new Subscriber<AddGoodsBean>() {    @Override    public void onCompleted() {    }    @Override    public void onError(Throwable e) {    }    @Override    public void onNext(AddGoodsBean addGoodsBean) {        iAddGoodsModel.onSuccess(addGoodsBean);    }});