OkHttp2.x简单使用说明
来源:互联网 发布:软件配置管理报告 编辑:程序博客网 时间:2024/06/16 10:34
转载请标明出处:
http://blog.csdn.net/mr_lawen/article/details/53334006
简介
OkHttp是一款高效的HTTP请求框架,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还具有有透明的GZIP压缩,请求缓存等优势。
配置依赖
compile 'com.squareup.okhttp:okhttp:2.4.0'
OkHttp内部依赖okio,需要同时导入okio:
compile 'com.squareup.okio:okio:1.5.0'
添加权限
<uses-permission android:name="android.permission.INTERNET"/>
使用方式
Http Get
创建出OkHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
创建一个http请求,这里为get请求方式
Request request = new Request.Builder() .url("http://www.baidu.com") .build();
通过OkHttpClient将request请求封装为一个任务call
Call call = mOkHttpClient.newCall(request);
将call加入任务队列,并添加回调
call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { //请求成功,获得返回数据 Logger.d(response.body().string()); } });
以上就是发送一个get请求的步骤:
首先构造一个Request请求对象,请求的参数至少有url,可以通过Request.Builder设置更多的参数(header、method等)。
然后将request封装为一个任务call。
最后异步执行请求,将call加入调度队列,等待任务执行完成,就可以在Callback中得到返回结果。通过response.body().string()可以获取返回的字符串;通过response.body().bytes()可以获取返回的二进制字节数组;通过response.body().byteStream()可以获取返回的InputStream,支持大文件下载。OnResponse()执行的线程不是UI线程,如果想要更新UI还需要通过handler等方式。
Http Post
首先同样是创建OkHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
然后构建键值对请求体,使用FormEncodingBuilder
RequestBody requestBody = new FormEncodingBuilder() .add("phoneNumber", "15545104510") .add("action", "17").build();
但是FormEncodingBuilder不可以更改编码方式,当我们不需要OkHttp默认的utf-8编码时,这种键值对请求方式就不适用了,你可以下载源码进行修改,但这样代价有点大,没必要,有另一种实现方式:
String params = "phoneNumber=15545104510&action=17";RequestBody requestBody = RequestBody .create(MediaType.parse("application/x-www-form-urlencoded;charset=gbk"),params);
通过RequestBody.create()方式,修改编码方式,将请求键值对参数以字符串的形式加入。注意这样只是修改了请求时的编码,onResponse()中获取数据时也要进行转码:
Logger.d(new String(response.body().bytes(),"gbk"));
这种方式也同样适合post Json串。
接下来创建一个Request对象
Request request = new Request.Builder() .url(url) .post(requestBody) //加入请求体 .build();
通过OkHttpClient将request请求封装为一个任务call
Call call = mOkHttpClient.newCall(request);
将call加入任务队列,并添加回调
call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { //请求成功,获得返回数据 Logger.d(new String(response.body().bytes(),"gbk")); }});
- OkHttp2.x简单使用说明
- Glide 集成 OkHttp2.x 、OkHttp3.x 和 Volley
- Android网络编程(五)OkHttp2.x用法全解析
- Okhttp使用和源码分析一(OkHttp2.x用法)
- X-CMD使用说明
- quick-x-player 使用说明
- quick-x-player 使用说明
- Quick-x-player 使用说明
- X-date Npm 使用说明
- quick-x-player 使用说明
- Hash_table 的简单使用说明
- jQuery Mobile简单使用说明
- checkstyle简单使用说明
- log4j的简单使用说明
- sharekit简单使用说明
- sharekit简单使用说明
- Voipswitch 简单使用说明
- TestFlight简单使用说明
- Win7 64bits os下安装MySQL5.7方法
- Javaweb中JavaScript的运算符
- linux下安装LAMP环境部署与lamp下mysql的远程连接
- 96. Unique Binary Search Trees 等题
- Git冲突:commit your changes or stash them before you can merge.
- OkHttp2.x简单使用说明
- Python读取配置文件
- Apache POI使用详解
- Python入门——初识Python
- 点乘a*b和叉乘aXb
- Unity Profiler 性能分析
- Android adb实现原理
- Android沉浸式状态栏之高仿QQApp
- 生产环境基于HA的Spark搭建