您的位置:首页 > 移动开发 > Android开发

初学者---Android (简单总结)Retrofit请求方式之get,post

2017-11-22 20:38 471 查看
自己用过的,没有坑

//get请求,无参数
@GET("product/getCatagory")
Observable<Catagory> getCatagory();

/**
* 根据newsid获取对应的资讯数据
* @param newsId
* @return call
*/
//有参数
@GET("News/{newsId}")
Call<News> getNews(@Path("newsId") String newsId);
//若需要重新定义接口地址可以使用@Url
//Map
@GET
Call<List<CaigenActivitySubjectsBean>> getActivitySubjectsList(
@Url String url,
@QueryMap Map<String, String> map);

//post有参数
@FormUrlEncoded
@POST("user/login")
Observable<UserBean> getLogin(@Field("mobile") String mobile, @Field("password") String password);

//post有参数(使用map集合)
@FormUrlEncoded//读参数进行urlEncoded
@POST("/product/getProductCatagory")
Observable<ProductCatagory> getProductCatagory(@FieldMap HashMap<String,String> map);

更多,看这里【Android】Retrofit 2.0 的使用

1.封装一个公用的工场Retrofit,(以及添加拦截器)

public class RetrofitFactory {

//构造
private RetrofitFactory() {

}

private static OkHttpClient httpClient = new OkHttpClient.Builder()
//            .addInterceptor(new LoggingInterceptor())//添加拦截器
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
private static ApiServer retrofitService = new Retrofit.Builder()
.baseUrl(Api.LOGIN_REG)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(httpClient)//添加拦截器
.build()
.create(ApiServer.class);
//单列模式
public static ApiServer getInstance() {
return retrofitService;
}
}
2.使用

//使用(结合Rejava使用)
Observable<HomeBean> home = RetroFactory.getInstance().getHome();
home.subscribeOn(Schedulers.io())//订阅
.observeOn(AndroidSchedulers.mainThread())//切换到主线程
.subscribe(new Observer<HomeBean>() {//订阅观察者
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted:--------- ");
}

//异常
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:--------- ");
}
//得到数据
@Override
public void onNext(HomeBean homeBean) {

Logger.d(homeBean.getCode()+homeBean.getMsg());

}
});

常用依赖:

//   Toast依赖 Toasty
compile 'com.github.GrenderG:Toasty:1.2.5'
//    logger日志的使用
compile 'com.orhanobut:logger:2.1.1'
/*xRecyclerview*/
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
/*recyclerview*/
compile 'com.github.liuguangqiang.SuperRecyclerView:super-recyclerview:0.1.2'

//retrofit2+okhttp3+rxandroid
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'
//fresco
compile 'com.facebook.fresco:fresco:0.14.1'
/*二维码依赖*/
compile 'cn.yipianfengye.android:zxing-library:2.2'
/*轮播图*/
compile 'com.youth.banner:banner:1.4.9'
/*banner的iamge加载*/
compile 'com.github.bumptech.glide:glide:3.7.0'
/*imgageloader*/
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

//    eventbus
compile 'org.greenrobot:eventbus:3.0.0'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: