Retrofit2系列:简单的Get请求
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Retrofit2系列:简单的Get请求相关的知识,希望对你有一定的参考价值。
完整源码见: https://github.com/androidzhangjin/Retrofit2Demo
Postman调试接口
- url地址:
https://api.github.com/search/commits
- 默认的http头部
Accept
,因为不能直接编辑它的值,所以不勾选,新建一个Accept
。值为application/vnd.github.cloak-preview
。
- Get请求参数
q
,值为repo:square/retrofit merge:false sort:author-date-desc
- 发送后的效果:
具体的json数据很长,就不粘贴了。自己用postman跑下,就有了。
开始撸代码
- 网络权限
<uses-permission android:name="android.permission.INTERNET"/>
- retrofit2.7.2中包含了okhttp3.14.7,需要增加java8编译配置,免得2.7.2版本编译失败。
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
...
}
buildTypes {
...
}
// 增加java8的配置
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
- 导入retrofit2依赖,不需要再导入okhttp了。
implementation 'com.squareup.retrofit2:retrofit:2.7.2'
implementation 'com.squareup.retrofit2:converter-gson:2.7.2'
- 从Postman中复制json数据,粘贴到GsonFormat插件,生成
ResponseBean.java
,接近1400行代码,就不贴了,看上面的github地址吧。 - 新建接口
GithubApiService.java
,代码如下:
public interface GithubApiService {
@GET("search/commits")
Call<ResponseBean> getReposCommits(@Header("Accept") String authorization, @Query("q") String para);
}
- MainActivity.java中初始化Retrofit、发送请求:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "xxx";
public static final String BASE_URL = "https://api.github.com/";
private static Retrofit retrofit = null;
private final static String REPO_PATH = "repo:square/retrofit merge:false sort:author-date-desc";
private final static String HEADER_AUTH = "application/vnd.github.cloak-preview";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connectAndGetApiData();
}
public void connectAndGetApiData(){
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
GithubApiService commitApiService = retrofit.create(GithubApiService.class);
Call<ResponseBean> call = commitApiService.getReposCommits(HEADER_AUTH,REPO_PATH);
call.enqueue(new Callback<ResponseBean>() {
@Override
public void onResponse(Call<ResponseBean> call, Response<ResponseBean> response) {
List<ResponseBean.ItemsBean> commits = response.body().getItems();
Log.d(TAG, "Number of commits received: " + commits.size());
}
@Override
public void onFailure(Call<ResponseBean> call, Throwable throwable) {
Log.e(TAG, throwable.toString());
}
});
}
}
运行结果,logcat截图,搞定。
以上是关于Retrofit2系列:简单的Get请求的主要内容,如果未能解决你的问题,请参考以下文章