说明
简单封装了Retrofit,实现链式编程,兼容其他插件(例如rxjava,gson等)。 Retrofit创建的Service对象之后,通过使用回调的方式调用方法返回对应方法的返回对象。 没有注入代码,没有使用反射。不增加程序负担。
例如:
//定义service,请求
interface MainService {
@GET("s?wd=/{str}")
Call<String> searchRetrofit(@Path("str") String str);
}
//回调处理
Callback<String> callback = new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
String body = response.body();
webView.loadDataWithBaseURL("", body, "text/html", "UTF-8", "");
}
@Override
public void onFailure(Call<String> call, Throwable t)
}
};
//发送请求
RetrofitKT
.newBuilder()
.addConverterFactory(RetrofitConverter.RetrofitFactory.create())
.build("http://wwww.baidu.com/")
.service(MainService.class)
.method("searchRetrofit", "Retrofit")
.obtain(new BaseCallback<>(callback));
service()方法,传入一个Service类(MainService.class),这里使用Retrofit.create()创建这个service对象(mainService),并通过method方法得到mainService中的方法(searchRetrofit()),最后在obtain()中调用searchRetrofit()方法。
obtain()方法传入一个接口ReturnTypeAdapter,在这里会将searchRetrofit()方法的返回值(Call)传递给hook方法。可以通过自定义ReturnTypeAdapter来处理返回值。
BaseCallback就是简单实现。在hook方法中进行了网络请求,并添加回调,这里可以实现很多自定义功能(例如 配置统一取消请求等)。
public interface ReturnTypeAdapter<T> {
void hook(T result);
}
public class BaseCallback<T> implements ReturnTypeAdapter<Call<T>> {
private Callback<T> callback;
public BaseCallback(Callback<T> callback) {
this.callback = callback;
}
@Override
public void hook(Call<T> result) {
result.enqueue(new Callback<T>() {
@Override
public void onResponse(Call<T> call, Response<T> response) {
if (callback != null)
callback.onResponse(call, response);
}
@Override
public void onFailure(Call<T> call, Throwable t) {
if (callback != null)
callback.onFailure(call, t);
}
});
}
}
Github 链接
https://github.com/Huang102/RetrofitKT
欢迎访问,同时希望你提出宝贵意见。