首页 > 学院 > 开发设计 > 正文

Retrofit学习

2019-11-07 23:31:19
字体:
来源:转载
供稿:网友

A type-safe HTTP client for Android and java,一个针对Android和Java类型安全的http客户端。 类型安全是怎么解释呢,就是说Retrofit会把请求网络api返回的response转化为Java对象(实体类)方便操作。 学习时,不需要自己搭建服务器(当然能自己搭建也行),我们可以用一些现有的api来测试,比如:http://gank.io/api(不需要注册,我喜欢)。测试访问http://gank.io/api/day/history接口。 这里写图片描述 一、在module的build.gradle中添加依赖

dependencies { compile 'com.android.support:appcompat-v7:22.2.1' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' //retrofit库 compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' //gson解析库}

二、定义参数接口 retrofit配置api参数是通过接口进行的

public interface ApiService { @GET("/{params}/day/history") Call<Date> getDate(@Path("params") String params);}

此处把api作为参数,在调用时需要传入使得api完整。 三、定义响应实体 上图中的response是一个json数据,可以定义如下实体类进行接收

public class Date { PRivate boolean error; private ArrayList<String> results; public boolean isError() { return error; } public ArrayList<String> getResults() { return results; } @Override public String toString() { return "error="+error+",results="+results.toString(); }}

四、请求数据

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Retrofit retrofit=new Retrofit.Builder() .baseUrl("http://gank.io/") //域名 .addConverterFactory(GsonConverterFactory.create()) //json转化器 .build(); ApiService service=retrofit.create(ApiService.class); Call<Date> call2 = service.getDate("api"); //传入参数 call2.enqueue(new Callback<Date>() { @Override public void onResponse(Call<Date> call, Response<Date> response) { Log.i("MhahaainActivity", "onResponse(),," + response.body().toString()); } @Override public void onFailure(Call<Date> call, Throwable t) { Log.i("MhahaainActivity", "Throwable=" + t.toString()); } }); }

这里使用了异步请求的enqueue方式,同步方式execute是现成堵塞的,需要新开一个线程进行处理。

结果: Line 58669: 02-25 15:28:55.365 18249 18249 I MhahaainActivity: onResponse(),,error=false,results=[2017-02-24, 2017-02-23, 2017-02-22, 2017-02-21, 2017-02-20, 2017-02-17, 2017-02-16, 2017-02-15, 2017-02-14, 2017-02-13, 2017-02-10, 2017-02-09, 2017-02-08, 2017-02-07, 2017-02-06, 2017-02-04, 2017-02-03, 2017-01-23, 2017-01-22, 2017-01-20, 2017-01-19, 2017-01-16, 2017-01-13, 2017-01-12, 2017-01-11, 2017-01-10, 2017-01-09, 2017-01-06, 2017-01-05, 2017-01-04, 2017-01-03, 2016-12-30, 2016-12-29, 2016-12-28, 2016-12-27, 2016-12-26, 2016-12-23, 2016-12-22, 2016-12-21, 2016-12-20, 2016-12-19, 2016-12-16, 2016-12-15, 2016-12-14, 2016-12-13, 2016-12-12, 2016-12-09, 2016-12-08, 2016-12-07, 2016-12-06, 2016-12-05, 2016-12-02, 2016-12-01, 2016-11-30, 2016-11-29, 2016-11-28, 2016-11-25, 2016-11-24, 2016-11-23, 2016-11-22, 2016-11-21, 2016-11-18, 2016-11-17, 2016-11-16, 2016-11-15, 2016-11-14, 2016-11-11, 2016-11-10, 2016-11-09, 2016-11-08, 2016-11-07, 2016-11-04, 2016-11-03, 2016-11-02, 2016-11-01, 2016-10-31, 2016-10…


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表