Retrofit,中文的翻译为“式样翻新”的意思,是一个基于OKHttp的RESTful网络请求框架。通俗一点来说,Retrofit就是一个网络请求框架的封装。同样是由Square公司开源的Android热门网络框架之一,其具有功能强大、简洁易用及高可拓展性特点。
官网网址:Retrofit官网
Github地址:Github
1、基于OkHttp并遵循Restful API设计风格
2、通过注解的形式,可简便的配置网络请求参数
3、支持同步及异步的网络请求方式
4、支持RxJava
5、支持多种数据格式的解析(Json、XML、Protobuf等)
1、gradle引入库
implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' //配置使用Gson解析响应数据 可选 implementation 'com.squareup.retrofit2:adapter-rxjava:2.4.0' //配置支持RxJava 可选 复制代码
2、初始化Retrofit对象
Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) //配置baseUrl .addConverterFactory(GsonConverterFactory.create()) //配置使用Gson解析响应数据 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //配置支持RxJava .build(); 复制代码
public interface WeatherService { //使用GET请求 直接返回原始数据 @GET("weather?location=%E5%98%89%E5%85%B4&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ") Call<ResponseBody> cityNameQueryWeather(); //使用GET请求 返回Json映射对象 @GET("{weather}?location=%E5%98%89%E5%85%B4&output=json") Call<WeatherResp> cityWeatherPath(@Path("weather") String weather, @Query("ak") String ak); //使用POST请求 支持RxJava返回 @FormUrlEncoded() @POST("{weather}") rx.Observable<WeatherResp> cityWeatherPost(@Path("weather") String weather, @Field("ak") String ak, @Field("location") String location, @Field("output") String output); } 复制代码
WeatherService weatherService = retrofit.create(WeatherService.class); Call<ResponseBody> responseBodyCall = weatherService.cityNameQueryWeather(); try { Response<ResponseBody> responseBody = responseBodyCall.execute(); System.out.println("call:" + responseBody.body().string()); } catch (IOException e) { e.printStackTrace(); } 复制代码
WeatherService weatherService = retrofit.create(WeatherService.class); Call<WeatherResp> responseBodyCall = weatherService.cityWeatherPath("weather", "5slgyqGDENN7Sy7pw29IUvrZ"); responseBodyCall.enqueue(new Callback<WeatherResp>() { @Override public void onResponse(Call<WeatherResp> call, Response<WeatherResp> response) { System.out.println("call:" + response.toString()); } @Override public void onFailure(Call<WeatherResp> call, Throwable t) { } }); 复制代码
WeatherService weatherService = retrofit.create(WeatherService.class); weatherService.rxCityWeatherPost("weather", "5slgyqGDENN7Sy7pw29IUvrZ", "%E5%98%89%E5%85%B4", "json") .subscribeOn(Schedulers.io()) //在新线程里面处理网络请求 .observeOn(AndroidSchedulers.mainT这篇关于Android源码系列-解密Retrofit的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!