Retrofit是由square公司开发的,是一个网络开发框架
1.首先使用它的时候,要先导入相关的jar包(一定要版本相同,否则运行的时候会报错)
compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4' compile 'com.google.code.gson:gson:2.6.2'2.定义一个接口类:
public interface RestService{ @GET("top250") Observable<MovieBean> getTopMovie(@Query("start")int start, @Query("count")int count); }3.再单独写一个工具Utils类(导入包的时候注意别导错包)
public class RestClient { private static final String BASE_URL = "https://api.douban.com/v2/movie/"; private Retrofit mRetrofit; private RestService mService; private static final int DEFAULT_TIMEOUT = 5; public RestClient(){ OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(DEFAULT_TIMEOUT,TimeUnit.SECONDS); mRetrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); mService = mRetrofit.create(RestService.class); } public RestService getRectService(){ if (mService != null){ return mService; } return null; } private static class SingletonHolder{ private static final RestClient INSTANCE = new RestClient(); } public static RestClient getInstance(){ return SingletonHolder.INSTANCE; } public void getTopMovie(Subscriber<MovieBean> subscriber, int start , int count){ mService.getTopMovie(start,count) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); } }4.然后在Main界面的点击事件中请求即可
findViewById(R.id.click_me_BN).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getMovie(); } });5.
private void getMovie() { subscriber = new Subscriber<MovieBean>(){ @Override public void onCompleted() { Toast.makeText(MainActivity.this, "Get Top Movie Completed", Toast.LENGTH_SHORT).show(); } @Override public void onError(Throwable e) { } @Override public void onNext(final MovieBean responseBody) { runOnUiThread(new Runnable() { @Override public void run() { list = responseBody.getSubjects(); listView.setAdapter(new MovieAdapter(MainActivity.this,list)); } }); } }; RestClient.getInstance().getTopMovie(subscriber,0,10); }
6.布局和modele类的封装就不传了,大家可自己简单写下(参照 网上自己写了写)。