retrofit(2017_09_22)
来源:互联网 发布:难听的歌网络歌手 编辑:程序博客网 时间:2024/06/06 14:01
retrofit的基本使用
由来:Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。
原因:网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装。
使用 Retrofit 的步骤共有7个:
步骤1:添加Retrofit库的依赖
1. 在 Gradle加入Retrofit库的依赖 dependencies {compile 'com.squareup.retrofit2:retrofit:2.0.2'// Retrofit库 }2. 添加 网络权限AndroidManifest.xml<uses-permission android:name="android.permission.INTERNET"/>
步骤2:创建 接收服务器返回数据 的类
public class Reception { ... // 根据返回数据的格式和数据解析方式(Json、XML等)定义 // 下面会在实例进行说明 }
步骤3:创建 用于描述网络请求 的接口
Retrofit将 Http请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数用 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求注:接口中的每个方法的参数都需要使用注解标注,否则会报错
public interface GetRequest_Interface { @GET("openapi.do?keyfrom=Yanzhikai&key=2032414398&type=data&doctype=json&version=1.1&q=car") Call<Translation> getCall(); // @GET注解的作用:采用Get方法发送网络请求 // getCall() = 接收网络请求数据的方法 // 其中返回类型为Call<*>,*是接收数据的类(即上面定义的Translation类) // 如果想直接获得Responsebody中的内容,可以定义网络请求返回值为Call<ResponseBody>}
步骤4:创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://fanyi.youdao.com/") //设置网络请求的Url地址 .addConverterFactory(GsonConverterFactory.create()) //设置数据解析器 .build();
Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://fanyi.youdao.com/") // 设置网络请求的Url地址 .addConverterFactory(GsonConverterFactory.create()) // 设置数据解析器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 支持RxJava平台 .build();
步骤5:创建 网络请求接口实例 并 配置网络请求参数
// 创建 网络请求接口 的实例 GetRequest_Interface request = retrofit.create(GetRequest_Interface.class); //对 发送请求 进行封装 Call<Reception> call = request.getCall();
步骤6:发送网络请求(异步 / 同步)
//发送网络请求(异步) call.enqueue(new Callback<Translation>() { //请求成功时回调 @Override public void onResponse(Call<Translation> call, Response<Translation> response) { //请求处理,输出结果 response.body().show(); } //请求失败时候的回调 @Override public void onFailure(Call<Translation> call, Throwable throwable) { System.out.println("连接失败"); } });// 发送网络请求(同步)步骤7: 处理服务器返回的数据//发送网络请求(异步) call.enqueue(new Callback<Translation>() { //请求成功时回调 @Override public void onResponse(Call<Translation> call, Response<Translation> response) { // 对返回数据进行处理 response.body().show(); } //请求失败时候的回调 @Override public void onFailure(Call<Translation> call, Throwable throwable) { System.out.println("连接失败"); } });// 发送网络请求(同步) Response<Reception> response = call.execute(); // 对返回数据进行处理 response.body().show()
来自作者:Carson_Ho
链接:http://www.jianshu.com/p/a3e162261ab6
grder的配置:
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'compile 'com.google.code.gson:gson:2.8.2'
Retrofig的用法:
serviceMethod:包含所有网络请求信息的对象
baseUrl:网络请求的url地址
callFactory:网络请求工厂
adapterFactories:网络请求适配器工厂的集合
converterFactories:数据转换器工厂的集合
callbackExecutor:回调方法执行器
Retrofit的注意事项:
注意: retrofit2.0后:BaseUrl要以/结尾;@GET 等请求不要以/开头;@Url: 可以定义完整url,不要以 / 开头。
retrofit的注解:
方法注解:
包含@GET、 @POST、 @PUT、 @DELETE 、@PATH、 @HEAD、 @OPTIONS、 @HTTP。
标记注解:
包含 @FormUrlEncoded、 @Multipart、 @Streaming。
参数注解:
包含 @Query, @QueryMap、 @Body、 @Field, @FieldMap、 @Part, @PartMap。
其他注解:
@Path、 @Header, @Headers、 @Url
@Query,@QueryMap:查询参数,用于GET查询,需要注意的是@QueryMap可以约定是否需要encode
@GET("group/users")Call<List<User>> groupList(@Query("id") int groupId);//--> http://baseurl/group/users?id=groupId
Call<List<News>> getNews((@QueryMap(encoded=true) Map<String, String> options);
@Field,@FieldMap:Post方式传递简单的键值对,
需要添加@FormUrlEncoded表示表单提交
@FormUrlEncoded
@POST(“user/edit”)
Call updateUser(@Field(“first_name”) String first, @Field(“last_name”) String last);
@Body:用于POST请求体,将实例对象根据转换方式转换为对应的json字符串参数,
这个转化方式是GsonConverterFactory定义的。
@POST(“add”)
Call
- retrofit(2017_09_22)
- 2013_09_22 固定div setTimeout
- 15_09_22 数组初始化时的错误
- 15_09_22 Java 中写方法注意事项
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Linux-视频监控系统(14)-项目总结
- Subversive SVN Connector installation fails in Eclipse Oxygen 安装eclipse svn
- 扑克牌顺子
- Android 如何去除ViewPager的左右滑动监听
- 使用.net mvc4 + bootstrap +uploadify上传图片功能保持前端css一致性
- retrofit(2017_09_22)
- 移动设备显示尺寸大全 之CSS3
- Intent数据的传递2017——09——15
- BottomBar的基本使用
- java21个知识点重点
- uvalive 4848 Tour Belt
- ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)
- 【HBase调优】Hbase万亿级存储性能优化总结
- c++的奇技淫巧