近几年,Retrofit犹如燎原之火搬席卷了整个Android界。要是不懂Retrofit,简直不好意思出门。。。
由于近几个项目都没用到Retrofit,无奈只能业余时间自己撸一下,写的不好的地方,还请不吝赐教。
要集成retrofit,在app的build.gradle中添加库以来就可以
compile 'com.squareup.retrofit2:retrofit:2.3.0'

如果需要集成json解析,还需要添加库:

compile 'com.squareup.retrofit2:converter-gson:2.3.0'

如果还需要集成rxjava,还需要添加库:

compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

添加库完毕,接下来需要定义请求接口:


public interface TestService {
    /**
     * 获取新闻  使用rxjava
     * @return
     */
    @POST(AppConstance.NEWS_URL)
    Observable<NewsBean> getNewsWithRxJava(@Query("key") String key, @Query("type") String type);

    /**
     * 获取新闻  不使用rxjava
     * @return
     */
    @POST(AppConstance.NEWS_URL)
    Call<ResponseBody> getNewsWithoutRxJava(@Query("key") String key, @Query("type") String type);
}

这个接口是我在聚合数据申请的测试接口,我将其分为两种情况:使用rajava、不使用rxjava。
正常使用中,都会将Retrofit进行封装,我在这里将其简单的封装:

public class RetrofitUtil {
    private volatile static RetrofitUtil sInstance;
    private Retrofit mRetrofit;
    private TestService mTestService;
    private RetrofitUtil(){
        mRetrofit = new Retrofit.Builder()
                .baseUrl(AppConstance.APP_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
        mTestService = mRetrofit.create(TestService.class);
    }
    public static RetrofitUtil getInstance(){
        if (sInstance == null){
            synchronized(RetrofitUtil.class){
                if (sInstance == null){
                    sInstance = new RetrofitUtil();
                }
            }
        }
        return sInstance;
    }
    public TestService getTestService(){
        return mTestService;
    }
}


万事具备,现在开始在Activity中测试Retrofit。
xml文件:


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:andro)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Observer<NewsBean>() {
                            private Disposable mDisposable;

                            @Override
                            public void onSubscribe(Disposable d) {
                                mDisposable = d;
                            }

                            @Override
                            public void onNext(NewsBean value) {
                                Toast.makeText(MainActivity.this, value.toString(), Toast.LENGTH_SHORT).show();
                                mDisposable.dispose();//注销
                            }

                            @Override
                            public void onError(Throwable e) {
                                Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
                                mDisposable.dispose();//注销
                            }

                            @Override
                            public void onComplete() {

                            }
                        });

            }
        });

相关文章:

  • 2021-09-11
  • 2022-12-23
  • 2021-07-16
  • 2021-11-27
  • 2021-09-06
  • 2021-07-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-17
  • 2021-07-06
  • 2021-06-08
  • 2021-10-25
  • 2021-07-20
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案