okHttp3的用法及介绍
来源:互联网 发布:gif动态制作软件 编辑:程序博客网 时间:2024/06/05 15:19
1.okhttp官网地址:http://square.github.io/okhttp/
2. github中okhttp的链接路径[https://github.com/square/okhttp]
okhttp的特点: * 支持HTTP/2 和 SPDY* 默认支持 GZIP 降低传输内容的大小* 支持网络请求的缓存* 当网络出现问题时,自动重试一个主机的多个 IP 地址
3.okHttp中Api的简单介绍:
a.OkHttpClient:新建一个OkHttpClient实例,用于处理请求。 b.Request:构建请求参数,如url,请求方式,请求参数,header等。 c.Call:生成一个具体请求实例,相当于将请求封装成了任务;两种方式: ①、call.execute(),非异步方式,会阻塞线程,等待返回结果。 ②、call.enqueue(Callback),异步方式。
get请求:
第一步:在app/build.gradle下的dependencies中添加依赖:
compile ‘com.squareup.okhttp3:okhttp:3.5.0’
第二步:创建okHttpClient对象
OkHttpClient client = new OkHttpClient();//我们可以将这个对象看成是一个队列 Request get_request = new Request.Builder()//创建request对象的get请求 .get() .url(url) .build();
第四步:将创建好的request添加到OkHttpClient中
client.newCall(get_request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) {//失败返回的结果 //将错误的结果打印出来 Log.i(TAG, "onFailure() e=" + e); } @Override public void onResponse(Call call, Response response) throws IOException {//成功返回的结果 String result = response.body().string(); Log.i(TAG, " onResponse() reuslt=" +result); } });
post请求:
第一步:创建okHttpClient对象
OkHttpClient client = new OkHttpClient();//我们可以将这个对象看成是一个队列
第二步:创建创建request对象的get请求
Request post_request = new Request.Builder()//创建request对象的get请求 .post(requestBody) .url(url) .build();
第三步:将创建好的request添加到OkHttpClient中
RequestBody requestBody = new FormBody.Builder() .add("key", "value") .build(); client.newCall(get_request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) {//网络请求失败返回的结果 //如果请求网络错误,将错误的结果打印出来 Log.i(TAG, "onFailure() e=" + e); } @Override public void onResponse(Call call, Response response) throws IOException {//成功返回的结果 String result = response.body().string(); Log.i(TAG, " onResponse() reuslt=" +result); } });
注意点:
1.okHttp在请求到网络数据后在call中的onFailure()及onResponse()都运行在非主线程,我们不能再这两个方法
里面直接更新UI
2.这里需要注意的一点:onResponse回调的参数是response,一般情况下,比如我们希望获得返回的字符串,可以通response.body().string()获取;如果希望获得返回的二进制字节数组,则调用response.body().bytes();如果你想拿到返回的inputStream,则调用response.body().byteStream()
附加点:因为原生OkHttp的使用比较复杂,有一个包装过的工具项目okhttp-utils使用非常简单
* 添加依赖: compile 'com.zhy:okhttputils:2.3.8'* 工具类简介:[https://github.com/hongyangAndroid/okhttp-utils](https://github.com/hongyangAndroid/okhttp-utils)
0 0
- okHttp3的用法及介绍
- OKHttp3用法介绍
- okhttp3的详细介绍
- OkHttp3的基本用法
- okhttp3用法
- fastjson的用法及介绍
- JAXB的用法及介绍
- OKHttp3.0的日常及入门
- android OkHttp3.0介绍
- android OkHttp3.0介绍
- okhttp3基本用法
- OkHttp3用法全解析
- OkHttp3 基本用法
- okhttp3.4用法全解析,追赶okhttp的更新步伐
- Day6 快速学习OkHttp3的九大用法
- css介绍及css的基本用法
- log4j的介绍及用法 java
- SiteMesh的介绍用法及原理
- linux系统扩展php的zip模块
- MyBatis快速入门
- 关于SQL Server的使用!
- guava之Objects和MoreObjects
- 逻辑运算符
- okHttp3的用法及介绍
- 抽象类与接口作为形参
- GitHub入门与实践笔记.md
- Git管理
- MyEclipse 2016 Stable 1.0破解教程
- 通过项目逐步深入了解Mybatis<一>
- javafx textfied 属性改变事件与回车触发事件
- nginx配置反向代理示例
- CRC校验算法的解析,暨对网上的CRC详解的补充