依赖
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);
}
});