Retrofit 写一个网络请求
以获取豆瓣 Top250 榜单为例,地址:https://api.douban.com/v2/movie/top250
1,首先,要使用Retrofit ,你肯定需要把它的包引入,在你的build.gradle文件中添加如下配置:
apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "com.hy.retrofitrxandroidsample" minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { 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' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4' }
2,创建一个Retrofit 实例,并且完成相关的配置。
完成baseURL的配置;
完成解析工具的配置;
String baseUrl = "https://api.douban.com/v2/movie/"; Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .build();3,创建一个接口 ,代码如下:
public interface MovieService { @GET("top250") Call<MovieEntity> getTopMovie(@Query("start") int start, @Query("count") int count); }4,用Retrofit 创建 接口实例 MoiveService,并且调用接口中的方法进行网络请求,代码如下:
异步请求方式:
MovieService movieService = retrofit.create(MovieService.class); Call<MovieEntity> call = movieService.getTopMovie(0, 10); call.enqueue(new Callback<MovieEntity>() { @Override public void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) { // resultTV.setText(response.body().toString()); Log.e(tag, "onResponse : " + response.body().toString()); } @Override public void onFailure(Call<MovieEntity> call, Throwable t) { // resultTV.setText(t.getMessage()); Log.e(tag, "onFailure : " + t.getMessage()); } });
注解类型
第一类:网络请求方法
第二类:标记
第三类:网络请求参数
参考文献:
Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
https://www.jianshu.com/p/5bc866b9cbb9
Android Retrofit 2.0 的详细 使用攻略(含实例讲解)
https://www.jianshu.com/p/a3e162261ab6