您的位置:首页 > 其它

Retrofit的简单认识

2017-02-22 16:29 141 查看
Retrofit是Square公司推出的一个第三方框架,主要是针对其以前推出的网络请求库OkHttp的一个封装,这样我们只需要进行简单的配置Retorfit就可以进行网络请求了

在开发工具Android Student上使用Retrofit

导入的依赖:

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包

compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包

compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包

在demo中所用的网络请求地址

请求地址:http://web.juhe.cn:8080/finance/stock/hs

请求参数:gid=sh601009&type=0&key=d28febfa1e2d21f37fd505f52e967b65

请求方式:GET

然后需要创建一个接口,通过注解与封装在Retrofit库内部的Okhhtp连接,进行网络请求



在方法上面有多种注解方式,现在只学到了两种

@GET: 通过get方式进行网络请求

@POST: 通过post方式进行网络请求

后面跟着的括号内的String就是整个网络请求的完整路径

Call<name>,其中的name就是进行网络请求后你需要返回的值的类型

更改为实体类,可以内部自动经过Gson解析,生成对应的实体类

更改为String,即返回请求的完整的json数据

然后在方法的参数中

@Query: 注解的功能相当于一个站位符

就是把 括号的String当做键值名,在之后的参数当做键值,形成一个键值对,当做参数拼接到上面的路径中,最后形成了完整的路径

例:

@GET("{name}")

Call<User>getUser(@Path("username")
String namevalue);

其这样直观的网络路径就是
name?username=namevalue

这样接口就写完了,现在可以去需要进行网络请求的地方调用Retrofit

首先生成一个Retrofit对象
Retrofit retrofit=new Retrofit.Builder()

.baseUrl("http://web,juhe,cn:8080/");

.addConverterFactory(ScalarsConverterFactory.create())

.addConverterFactory(GsonConverterFactory.create())

.build();

.baseUrl:括号中的参数加上之前@GET("name")中的name参数,形成最终的网络请求地址
.addConverterFactory:增加返回值为String的支持
.addConverterFactory: 增加返回值为实体类(已经经过了Gson的解析)的支持

生成刚才创建的接口对象
RequestService requestService = builder.create(RequestService.class);

调用接口中的方法,并添加参数
Call<Model> call1 = requestService.getModel("sh601009",
"0",
"d28febfa1e2d21f37fd505f52e967b65");

生成一个其内部的Call类对象,然后调用enqueue方法,异步获取网络数据



在先前已经定义好了一个Model类,对应网络的json数据,Retrofit库中也对Gson进行了封装,所以直接得到解析完成的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: