Retrofit网络请求库应用01
PS:什么是Retrofit?
在官方文档中有这样一句话--A type-safe HTTP client for Android and Java(一个类型安全的http client库),具体的话就去问百度吧。Retrofit是网络请求库,是一个开源的。主要是写代码会更少,更快,条例更清晰,刚开始学肯定是觉得还是自己写httpconnect好,自己写,想怎么写就怎么写,每个东西都有一个过程,现在主流的网络开源库还有volley,okhttp等,这都不错,今天我就写一篇简单的retrofit使用访问百度,返回百度页面的源码,这仅仅是为了证明该库怎么使用而已,我们先说标红内容,下一篇就是如何快速解析JSON和XML。开始。
主要内容:
- Retrofit加载
- 如何使用
- GET和POST
- JSON和XML解析
1:首先我们要加载Retrofit包
我的studio是2.0,我在官方文档上看到现在是Retrofit2.3.0,编辑器要求是studio2.3、java7及以上,我在添加依赖的时候找不到该包,所以我只能手动
compile 'com.squareup.retrofit2:retrofit:2.0.1'
2:创建接口Service,当然这个名字可以随便起。
先使用GET,/为根目录,在MainActivity中写http://www.baidu.com,总的网址就是http://www.baidu.com/,在后面加了一个/.
public interface Service {
@GET("/")
Call<String> getBaidu();
}
3:MainActivity中添加Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.baidu.com")
.addConverterFactory(new Converter.Factory() {
@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
return new Converter<ResponseBody, String>() {
@Override
public String convert(ResponseBody value) throws IOException {
return value.string();
}
};
}
})
.build();
这里需要注意的是:我们在调用百度网址的时候,加载到的数据并不是String,准确来说是二进制流或者说是网络请求回调(请求包,头数据等)。我们需要把它转换成String,Converter<ResponseBody, ?>转换成?(因为不一定是什么类型)。
.addConverterFactory(new Converter.Factory() {
@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
return new Converter<ResponseBody, String>() {
@Override
public String convert(ResponseBody value) throws IOException {
return value.string();//写String即可
}
};
}
})
然后拿到Service实例
Service service = retrofit.create(Service.class);
Call<String> baidu = service.getBaidu();
baidu.enqueue(this);
重写两个方法:
@Override
public void onResponse(Call<String> call, Response<String> response) {
Log.e("fanhuizhi",response.body()+"。。。");
} @Override
public void onFailure(Call<String> call, Throwable throwable) {
throwable.printStackTrace();
Log.e("fanhuizhi","出错了");
}
4:添加网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
运行结果:
Retrofit网络请求库应用01的更多相关文章
- Retrofit网络请求库应用02——json解析
PS:上一篇写了Retrofit网络请求库的简单使用,仅仅是获取百度的源码,来证明连接成功,这篇讲解如何解析JSON数据,该框架不再是我们之前自己写的那样用JsonArray等来解析,这些东西,我们都 ...
- Android进阶笔记01:Android 网络请求库的比较及实战(一)
在实际开发中,有的时候需要频繁的网络请求,而网络请求的方式很多,最常见的也就那么几个.本篇文章对常见的网络请求库进行一个总结. 一.使用HttpUrlConnection: 1. HttpUrlCon ...
- [转]Android各大网络请求库的比较及实战
自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...
- Android之网络请求库
自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...
- Android进阶笔记02:Android 网络请求库的比较及实战(二)
一.Volley 既然在android2.2之后不建议使用HttpClient,那么有没有一个库是android2.2及以下版本使用HttpClient,而android2.3及以上版本 ...
- Android 各大网络请求库的比较及实战
自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...
- 浅论Android网络请求库——android-async-http
在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Insta ...
- swift中第三方网络请求库Alamofire的安装与使用
swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面 ...
- 自己动手写一个iOS 网络请求库的三部曲[转]
代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/BuildYourHTTPRequestLibrary 开源项目:Pitaya,适合大 ...
随机推荐
- HTML form表单回车触发提交
<script type="text/javascript"> function submitByEnter() { if(event.key ...
- 启动关闭zookeeper集群的脚本
启动hadoop Ha集群是,每次都要手动启动每个zk节点,实在是太麻烦了.于是乎自己写了个脚本startAllZK.sh: 需要启动的节点,先在 NODENAME_ARR 数组中配置好,zkServ ...
- win8在安装office visio2003出现“请求的操作需要提升”,解决方法
单击右键,然后以管理员身份运行即可
- Vue.js之render函数基础
刚才翻了一下博客,才发现,距离自己写的第一篇Vue的博客vue.js之绑定class和style(2016-10-30)已经过去一年零两天.这一年里,自己从船厂的普通技术员,成为了一个微型不靠谱创业公 ...
- [Scikit-learn] 1.2 Dimensionality reduction - Linear and Quadratic Discriminant Analysis
Ref: http://scikit-learn.org/stable/modules/lda_qda.html Ref: http://bluewhale.cc/2016-04-10/linear- ...
- spring mvc常用注解的说明
最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类 ...
- 无阻赛的脚本(js脚本延迟方法)
js脚本的加载与执行 1.延迟脚本(defer属性) 带有defer属性的script标签,可以放置在文档的任何位置,在页面解析到该标签时,会开始下载该脚本,但是不会立即执行,直到dom加载完成(on ...
- 关于viewports 设备像素比 密度
首先追溯到像素,第一个麻烦事像素的总量问题,同样的大小的屏幕像素可以差很远,像素大小更小的导致内容也变小 在小屏幕上如果展示巨大的桌面网页,诺基亚的做法是首先载入完整的桌面网页,然后缩放至设备屏幕 ...
- Python 解LeetCode:654. Maximum Binary Tree
用一个整型数组构建一个二叉树,根结点是数组中的最大值,左右子树分别是根结点的值在数组中左右两边的部分. 分析,这是二叉树中比较容易想到的问题了,直接使用递归就行了,代码如下: class Soluti ...
- 坦言spring中事务、重试、异步执行注解
一.@Transaction 我们再编码过程中,大量使用到这个注解.一般情况下,@Transaction使用默认注解可以完成90%的功能,下面会针对一些特殊场景下,@Tansaction的使用注意 1 ...