Retrofit 2.0关于get和post的网络访问的简单使用
来源:互联网 发布:拓普康332n软件 编辑:程序博客网 时间:2024/05/22 08:27
Retrofit 2.0已经发布很久了,由于个人原因,现在才稍有接触。其他地方关于这个框架的中文介绍都只是之言片语。使得学习起来比较麻烦一些。一般来说这种比较强大的框架,学习起来都有一些难度,有时候也只运用它的一个功能模块。最近由于工作需要我学习使用了这个框架来进行网络的get和post请求来对数据进行操作。由于只是初次使用,了解还不深入,只能稍微介绍一下。
retrofit底层默认使用的就是okhttp。
优点:
可以配置不同HTTPclient来实现网络请求,如okhttp、httpclient等
请求的方法参数注解都可以定制
支持同步、异步和RxJava
超级解耦
可以配置不同的反序列化工具来解析数据,如json、xml等
使用非常方便灵活
框架使用了很多设计模式(感兴趣的可以看看源码学习学习)
缺点:
不能接触序列化实体和响应数据
执行的机制太严格
使用转换器比较低效
只能支持简单自定义参数类型
我所要解析的数据是json格式,说实话,使用这个框架真心非常的爽。个人认为不接触序列化实体是它最明显的缺点。下面按照步骤介绍一下使用步骤:
1. 在androidstudio的gradle中导入依赖
compile 'com.squareup.retrofit:retrofit-mock:2.0.0-beta2'compile 'com.squareup.okhttp:okhttp:2.7.5'compile 'com.squareup.okio:okio:1.11.0'compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'2.然后写一个类来进行get和post的注解:
public class Appstore {//例如URl为: // http://host/mobile/oauth/requireorder/publisher/2333/order?status=-1&start" + // "=0&size=1000000000&c=E12C8F80739" // 1.定义一个接口 public interface IPService { // 1.1.get请求:通过@GET注解,指明访问的地址 @GET()//★这里最前面不能带“/”// 1.2.定义一个请求网络,并且返回结果的方法(方法返回Call<Mydata> ),// 通过@Url来指定url
//这里的IP是一个数据类, Call<Mydata> getIP(@Url() String ip); /*********************************************************************************/// 1.3.post请求:通过@FormUrlEncoded、和@POST注解,指明访问的地址// (★注意:千万别忘了@FormUrlEncoded) @FormUrlEncoded @POST()// Call<Mydata> postIP(@Url() String ip); } // 2.实例化retrofit,配置好请求地址和解析方式 static Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://host/")//★这里最后面必须能带“/” .addConverterFactory(GsonConverterFactory.create())//设置将json解析为javabean所用的方式 .build();// // 3.通过retrofit创建第一步定义的接口的实例,//// 供在外部直接通过该实例调用该接口的getIPad方法,完成网络请求 static Appstore.IPService iPService = retrofit.create(Appstore.IPService.class);}3.进行这个封装之后就可以调用了。调用如下:
String ur=" mobile/oauth/requireorder/publisher/123456/order?status=-1&start=0&size=1000000000&c=E12C8F8073988A12499D28";final Call<Mydata> call = Appstore.iPService.getIP(ur);call.enqueue(new Callback<Mydata>() { @Override public void onResponse(Response<IP> response, Retrofit retrofit) { Mydata body=response.body();//取出解析的数据 call.cancel();//必须关闭 } @Override public void onFailure(Throwable t) { }});
注:数据的封装类。使用GsonFormat来进行数据封装。(删除了大部分数据)
public class Mydata { public static class DataBean { private int totalItemNum; private List<ItemsBean> items; public static class ItemsBean{ private RequireOrderEntityBean requireOrderEntity; private RequireEntityDisplayVOBean requireEntityDisplayVO; private ResumeDisplayVOBean resumeDisplayVO; public Object getUpdatetime() { return updatetime; } public void setStatusName(String statusName) { this.statusName = statusName; } }}对于Retrofit 2.0的认知还很肤浅。需要在实践中加深认知。也希望大神指教。
相关学习资料的网址
- retrofit官网: http://square.github.io/retrofit/
- github地址: https://github.com/square/retrofit
- Simple HTTP with Retrofit2:
https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/
0 0
- Retrofit 2.0关于get和post的网络访问的简单使用
- 【Android】Retrofit的使用(4)-Retrofit进行简单的GET和POST访问操作
- Retrofit的(get以及post)的简单使用
- Okhttp和Retrofit的get,post请求
- WebView的使用(http协议访问网络Get和Post请求方式)
- HttpUrlConnection的简单使用--get和post的简单使用
- Rxjava与retrofit的网络访问使用
- 关于 GET 和 POST 请求的简单示例
- 关于Retrofit2.0Get和Post请求的简单使用(小白适用)
- Retrofit(一)、Retrofit+OkHttp实现简单的Get与Post请求
- okhttp网络框架的使用get和post请求
- GET和POST的使用
- HttpClient的Post和Get访问网页
- 关于retrofit的Post请求
- retrofit网络请求的简单封装使用
- retrofit简单的get请求
- 关于get,post 的详细使用和注释
- Retrofit的Get与Post请求
- 里程计、推算定位与视觉里程计
- 第七周-OJ求三角形面积
- 高并发的简单理解
- [Unity3D教程]Unity中如何编写对象重用池机制
- string对象代替char数组实现字符串的组合存储并显示
- Retrofit 2.0关于get和post的网络访问的简单使用
- 利用StretchDIBits、CreateDIBSection、CreateDIBitmap三种方法显示内存位图
- 优化jsj脚本,防止浏览器卡死
- java使用poi从数据库导出Excel
- struts2 xml配置总结
- progressBar详解
- 用属性来实现封装
- java框架
- Win10 Chrome 在DPI缩放下导致界面放大问题 解决方案