Retrofit2+RxJava+OkHttp项目直接使用(简单快捷)
Retrofit2+RxJava+OkHttp项目直接使用
网上有很多讲这些的例子,都是详解需要时间去学习,这里直接带你使用,几分钟直接搭建架构完成使用。
这里我们使用Android Studio构建
- 第一步:引入。
build.gradle
dependencies{compile 'com.squareup.okhttp3:okhttp:3.2.0'compile 'com.squareup.retrofit2:retrofit:2.0.0'compile 'com.squareup.retrofit2:converter-gson:2.0.0'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'io.reactivex:rxjava:1.1.0'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'}
-
第二步:创建网络请求。
public class Network {private static ResultLoginId resultLoginId;private static OkHttpClient okHttpClient = new OkHttpClient();private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJavaCallAdapterFactory.create();public static ResultLoginId getLoginInfoId(){if (resultLoginId == null) {Retrofit retrofit = new Retrofit.Builder().client(okHttpClient).baseUrl(URLs.API)//请求地址 http://www.jbblog.top/.addConverterFactory(gsonConverterFactory).addCallAdapterFactory(rxJavaCallAdapterFactory).build();resultLoginId = retrofit.create(ResultLoginId.class);}return resultLoginId;}}
- 第三步:请求注解
public interface ResultLoginId {@POST("MyBlog/DiaryServlet")Observable<ResultKey> addDiary(@QueryMap Map<String, String> map);//}
注意:这里有两个地方需要注意
- 请求返回数据,因为用了gson解析这里返回的必须能gson解析。
ResultKey类:public class ResultKey {public int success;public String message;}
- 请求的参数需要注意的:
@QueryMap:对应参数的方式请求。
@Body:对应请求体方式。
以java服务器获取方式为例:
@Body对应服务器获取方式为:
BufferedReader reader = new BufferedReader(new InputStreamReader(req.getInputStream()));
String body = IOUtils.read(reader);
@QueryMap对应服务器获取方式为:
String name = req.getParameter(name);
弄清楚这个就知道以那种方式向服务器传数据了。
-
第三步:页面写请求。
一:protected Subscription subscription;//==========请求接口相关protected void unsubscribe() {if (subscription != null && !subscription.isUnsubscribed()) {subscription.unsubscribe();}}
二:
//==========================================deleteObserver<ResultKey> observerd = new Observer<ResultKey>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {//请求失败出现错误。e.printStackTrace();}@Overridepublic void onNext(ResultKey images) {//成功请求服务器返回结果Logger.e(images.message+"==================="+id);if(1==images.success){adapter.delItem(id);}}};private void delData(String id) {unsubscribe();subscription = Network.getLoginInfoId().addDiary(new GetBasePostInfo(this).delDiary(id))//这里上传参数到服务器。看下面参数具体信息//.map(new GetJieMiResultLoginKey(this)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(observerd);}
public Map<String,String> delDiary(String id){Map<String, String> info = new HashMap<>();info.put("id",id);info.put("type","3");return info;}
到这里就结束了。是不是很简单。
请求结果会回调observerd。
这里页面是删除数据直接调用delData(id)方法就可以了,传递id进去就行了,执行完成回调observerd对象。

浙公网安备 33010602011771号