Retrofit 2.0关于get和post的网络访问的简单使用
2016-10-14 09:23
337 查看
Retrofit 2.0已经发布很久了,由于个人原因,现在才稍有接触。其他地方关于这个框架的中文介绍都只是之言片语。使得学习起来比较麻烦一些。一般来说这种比较强大的框架,学习起来都有一些难度,有时候也只运用它的一个功能模块。最近由于工作需要我学习使用了这个框架来进行网络的get和post请求来对数据进行操作。由于只是初次使用,了解还不深入,只能稍微介绍一下。
retrofit底层默认使用的就是okhttp。
优点:
可以配置不同HTTPclient来实现网络请求,如okhttp、httpclient等
请求的方法参数注解都可以定制
支持同步、异步和RxJava
超级解耦
可以配置不同的反序列化工具来解析数据,如json、xml等
使用非常方便灵活
框架使用了很多设计模式(感兴趣的可以看看源码学习学习)
缺点:
不能接触序列化实体和响应数据
执行的机制太严格
使用转换器比较低效
只能支持简单自定义参数类型
我所要解析的数据是json格式,说实话,使用这个框架真心非常的爽。个人认为不接触序列化实体是它最明显的缺点。
下面按照步骤介绍一下使用步骤:
1. 在androidstudio的gradle中导入依赖
2.然后写一个类来进行get和post的注解:
3.进行这个封装之后就可以调用了。调用如下:
github地址: https://github.com/square/retrofit
Simple HTTP with Retrofit2:
https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/
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/
相关文章推荐
- 【Android】Retrofit的使用(4)-Retrofit进行简单的GET和POST访问操作
- Android中网络框架Retrofit2.0简单使用
- 使用Retrofit结合RxJava实现Get与Post网络请求
- Retrofit简单封装使用--Post请求封装请求体、Get请求通过参数、map方式构建url
- 使用开源项目Asynchttpclient的GET_POST访问网络,上传文件
- iOS网络请求总结、GET、POST、同步、异步代码块、异步代理、第三方AFNetWorking2.0使用
- android 使用http get 与post 访问网络
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- android 使用http get 与post 访问网络
- Retrofit2.0的get post请求简单数据
- WebView的使用(http协议访问网络Get和Post请求方式)
- android开发 使用HttpClient访问网络,post、get方式。注册、登陆、上传文件。
- 快捷使用Retrofit网络请求框架(get请求,post请求,上传文件)
- Retrofit的(get以及post)的简单使用
- Android中使用HttpURLConnection和HttpClient实现GET和POST请求访问网络
- 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
- Cocos2d-x 网络访问之GET方法和POST
- 关于安全的建议:对投入使用的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST 协议
- Android中使用HttpGet和HttpPost访问HTTP资源和区别
- 【Servlet】Servlet应用的get、post访问及和JSP的配合使用