Android Retrofit框架的使用和个人见解
来源:互联网 发布:轩辕剑昊天塔进阶数据 编辑:程序博客网 时间:2024/06/05 19:35
在Android开发中经常会处理网络请求,接触这个框架也有一段时间了,它给了我很多的帮助,希望能分享给android新人。
- 简介
- 特点
- 官方
- 使用
- 一般的GETPOSTPUTPATCHDELETE方法
- 文件上传
- 可能遇到的问题
简介
Retrofit官方给出的简介是这样的。
Type-safe HTTP client for Android and Java by Square, Inc.
简而言之就是帮我们处理好了很多Android网络请求相关的事情,比如异步加载数据、解析json、上传文件等
推荐Okhttp搭配使用,因为retrofit是优先使用okhttp。
特点
- Gson解析json,快捷方便的处理网络数据
- 配合Okhttp使用安全快捷的处理异步加载
- 上传文件等处理便捷
官方
官方文档
http://square.github.io/retrofit/
Github地址
https://github.com/square/retrofit
Gradle
compile ‘com.squareup.retrofit:retrofit:2.0.0-beta1’
这是2.0的测试版本,可以去官方看看稳定的低版本
使用
一般的GET、POST、PUT、PATCH、DELETE方法
//创建Retrofit接口,这里用回调方式public class API { public interface MyService { @GET("/{id}/api") void getFoods(@path("id") int id ,@QueryMap Map<String,Object> param,Callback<<List<Food>> callback); //这里要注意的是 post跟Patch方法都需要传Body(RESTful规范) @POST("/your/api") void createFood(@Body Food food,Callback<Response> callback); //跟post方法类似 @PATCH("/your/api") void modifyFood(@Body Food food ,Callback<<List<Food>> callback); //删除 @DELETE("/{id}/api") void deleteFood(@path("id") int id ,Callback<<List<Food>> callback); } public static MyService service = new RestAdapter.Builder() //设置你的请求EndPoint .setEndpoint(“http://123.0.0.0”) //设置Log提示 .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) //设置请求其他参数 例如加header .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader("token", "your token"); } }).build().create(MyService.class);}//使用接口API.service.getFoods(id,param, new Callback<List<Food>>() { @Override public void success(List<Food> foods, Response response) { //请求成功 处理你的操作 // foods 为已经解析的数据 // response 含有服务器返回的所有信息 } @Override public void failure(RetrofitError error) { //请求失败 //error含有所有错误信息 //例如 error.getKind() == RetrofitError.Kind.NETWORK 网络连接异常 //error.getResponse().getStatus(); 获取HTTP错误代码 } });
文件上传
//创建接口@Multipart@POST("/images")void upload(@Part("file") TypedFile file, Callback<File> callback);//使用API.service.upload(new TypedFile("image/jpg",yourFile), new Callback<File>() @Override public void success(File file, Response response) { //请求成功 处理你的操作 // foods 为已经解析的数据 // response 含有服务器返回的所有信息 } @Override public void failure(RetrofitError error) { //请求失败 //error含有所有错误信息 } });
可能遇到的问题
- 如果需要单纯的获取服务器传来的json(也就是不解析)建议直接使用okhttp来获取网络。
- 注意:post跟Patch方法都需要传Body对象,这也是RESTful的规范
- 需要重写GSON解析可以参考官方文档
0 0
- Android Retrofit框架的使用和个人见解
- Android 网络框架Retrofit的使用和解析
- Android学习和使用Retrofit框架
- Selenium自动化测试框架和个人见解
- Selenium自动化测试框架和个人见解
- android框架之Retrofit的使用
- 【Android - 框架】之Retrofit的使用
- 【Android - 框架】之Retrofit+RxJava的使用
- Android网络框架Retrofit的综合使用
- Android Retrofit 网络框架的使用
- android button 的clickable 和 enable属性的个人见解
- Retrofit框架的使用
- Retrofit框架的使用
- Android和iOS系统个人之见解
- Android和iOS系统个人之见解
- android使用retrofit框架示例
- Android框架学习之Retrofit(二)RxJava和Retrofit2.0的结合使用
- android中的 AlertDialog的个人见解
- 错误代码: 1050 Table 'emp' already exists
- Lr11破解方法
- session的生命周期
- JavaScript(内置对象)
- Sublime Text 无法使用Package Control的解决方法 以及 常用的插件安装过程
- Android Retrofit框架的使用和个人见解
- IOS 控件 TextField设置大全
- JNI编程
- 出现MBProgressHUD.o文件的错误
- html5 canvas画椭圆形
- RabbitMQ > 核心概念
- Scanner的使用
- 答同学提问
- C#调用耗时函数时显示进度条方式