目前Android开发几乎都离不开网络请求,而很多Android App网络框架都使用Retrofit来发送网络请求和响应交互,其优点是一底层依赖了强大灵活的Okhttp,二是其符合标准的RESTFUL和后端交互更爽。
本身Retrofit已经封装得很好了,其使用也很简单:
//定以接口
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
//获取实例
Retrofit retrofit = new Retrofit.Builder()
//设置OKHttpClient,如果不设置会提供一个默认的
.client(new OkHttpClient())
//设置baseUrl
.baseUrl("https://api.github.com/")
//添加Gson转换器
.addConverterFactory(GsonConverterFactory.create())
.build();
GitHubService service = retrofit.create(GitHubService.class);
Call<List<Repo>> call = service.listRepos("octocat");
//异步请求
clone.enqueue(new Callback<List<Repo>>() {
@Override
public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
// Get result bean from response.body()
List<Repo> repos = response.body();
...
}
@Override
public void onFailure(Call<List<Repo>> call, Throwable t) {
}
});
所以,即便Retrofit已经做好了大量封装工作,但是如果在app层使用的时候,如果直接使用将会在代码中到处充斥了这样的冗余代码,作为一名资深码农,肯定不会让这样的事情发生,为了偷懒,先要动脑筋。因此,如何更加方便的使用网络请求,让代码看起来更加优雅,这里奉上自己的劳动成果,不敢独享,两行代码搞定请求。
先来看看我最后的使用效果,用起来是像下面这样的:
/**
* GET 请求 示例:
*/
private void clickGetButton(){
String [] strArray = {
"Android", "1"};
RetrofitClient.get("newAppVerInfo", strArray, new BaseCallback<NewAppVerInfo>() {
@Override
protected void on200Resp(NewAppVerInfo newAppVerInfo){
textView.setText("收到GET结果: newAppVerInfo = " &