Retrofit2+RxJava+OkHttp项目直接使用(简单快捷)

转载请注明出处。http://jbblog.top/blogpagecontent.html?id=5

Retrofit2+RxJava+OkHttp项目直接使用
网上有很多讲这些的例子,都是详解需要时间去学习,这里直接带你使用,几分钟直接搭建架构完成使用。

这里我们使用Android Studio构建

  • 第一步:引入。
    build.gradle
     
    1. dependencies{
    2. compile 'com.squareup.okhttp3:okhttp:3.2.0'
    3. compile 'com.squareup.retrofit2:retrofit:2.0.0'
    4. compile 'com.squareup.retrofit2:converter-gson:2.0.0'
    5. compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0'
    6. compile 'com.github.bumptech.glide:glide:3.7.0'
    7. compile 'io.reactivex:rxjava:1.1.0'
    8. compile 'io.reactivex:rxandroid:1.1.0'
    9. compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
    10. }
  • 第二步:创建网络请求。

     
    1. public class Network {
    2. private static ResultLoginId resultLoginId;
    3.  
    4. private static OkHttpClient okHttpClient = new OkHttpClient();
    5. private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
    6. private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJavaCallAdapterFactory.create();
    7.  
    8. public static ResultLoginId getLoginInfoId(){
    9. if (resultLoginId == null) {
    10. Retrofit retrofit = new Retrofit.Builder()
    11. .client(okHttpClient)
    12. .baseUrl(URLs.API)//请求地址:http://www.jbblog.top/
    13. .addConverterFactory(gsonConverterFactory)
    14. .addCallAdapterFactory(rxJavaCallAdapterFactory)
    15. .build();
    16. resultLoginId = retrofit.create(ResultLoginId.class);
    17. }
    18. return resultLoginId;
    19. }
    20. }
  • 第三步:请求注解
 
  1. public interface ResultLoginId {
  2. @POST("MyBlog/DiaryServlet")
  3. Observable<ResultKey> addDiary(@QueryMap Map<String, String> map);//
  4. }

注意:这里有两个地方需要注意

  1. 请求返回数据,因为用了gson解析这里返回的必须能gson解析。
    ResultKey类:
     
    1. public class ResultKey {
    2. public int success;
    3. public String message;
    4. }
  2. 请求的参数需要注意的:
    @QueryMap:对应参数的方式请求。
    @Body:对应请求体方式。

以java服务器获取方式为例:
@Body对应服务器获取方式为:
BufferedReader reader = new BufferedReader(new InputStreamReader(req.getInputStream()));
String body = IOUtils.read(reader);
@QueryMap对应服务器获取方式为:
String name = req.getParameter(“name”);
弄清楚这个就知道以那种方式向服务器传数据了。


  • 第三步:页面写请求。
    一:

     
    1. protected Subscription subscription;
    2.  
    3. //==========请求接口相关
    4. protected void unsubscribe() {
    5. if (subscription != null && !subscription.isUnsubscribed()) {
    6. subscription.unsubscribe();
    7. }
    8. }

    二:

     
    1. //==========================================delete
    2. Observer<ResultKey> observerd = new Observer<ResultKey>() {
    3. @Override
    4. public void onCompleted() {
    5. }
    6.  
    7. @Override
    8. public void onError(Throwable e) {//请求失败出现错误。
    9. e.printStackTrace();
    10. }
    11.  
    12. @Override
    13. public void onNext(ResultKey images) {//成功请求服务器返回结果
    14. Logger.e(images.message+"==================="+id);
    15. if(1==images.success){
    16. adapter.delItem(id);
    17. }
    18. }
    19. };
    20.  
    21. private void delData(String id) {
    22. unsubscribe();
    23. subscription = Network.getLoginInfoId()
    24. .addDiary(new GetBasePostInfo(this).delDiary(id))//这里上传参数到服务器。看下面参数具体信息
    25. //.map(new GetJieMiResultLoginKey(this))
    26. .subscribeOn(Schedulers.io())
    27. .observeOn(AndroidSchedulers.mainThread())
    28. .subscribe(observerd);
    29. }
     
    1. public Map<String,String> delDiary(String id){
    2. Map<String, String> info = new HashMap<>();
    3. info.put("id",id);
    4. info.put("type","3");
    5. return info;
    6. }

到这里就结束了。是不是很简单。

请求结果会回调observerd。
这里页面是删除数据直接调用delData(id)方法就可以了,传递id进去就行了,执行完成回调observerd对象。

你可能感兴趣的:(OkHttp,RxJava,Retrofit2)