原本很抗拒 Retrofit 的,结果前几天在车上无聊想了一下,诶这玩意其实挺美的啊!java
在 21 世纪 10 年代还须要本身拷贝 jar 包的库都是耍流氓。—— 我说的git
dependencies { compile 'com.squareup.retrofit:retrofit:1.6.1' }
Gradle 是什么本身恶补去。github
我喜欢对照着 Resource 来声明 API。json
public interface Greet { @FormUrlEncoded @POST("/greets") void create(@Field("message") String message, Callback<Void> callback); }
public class YeahApi { private static final String ENDPOINT = "https://api.yeah.xingrz.us"; // 让 Gson 自动将 API 中的下划线全小写式变量名转换成 Java 的小写开头驼峰式 private static final Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create(); private static final RestAdapter adapter = new RestAdapter.Builder() .setEndpoint(ENDPOINT) .setConverter(new GsonConverter(gson)) .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader("User-Agent", "Yeah/" + BuildConfig.VERSION_NAME); request.addHeader("Accept", "application/json"); } }) .build(); private static final Greet GREET_API = adapter.create(Greet.class); public static Greet greet() { return GREET_API; } }
YeahApi.greet().create("Hello world!", new Callback<Void>() { @Override public void success(Void aVoid, Response response) { // ... } @Override public void failure(RetrofitError error) { // ... } });