OkHttp
来源:互联网 发布:depthmap软件 编辑:程序博客网 时间:2024/06/04 18:15
OkHttp
当前最火Http框架, 由,Square公司推出, OKHttp的项目地址:https://github.com/square/okhttp
特点
- 创建连接池缓存响应数据来减少重复的网络请求
- 基于Http的文件上传
- 文件下载
- 加载图片
- 支持SPDY, Google开发的基于TCP的应用层协议
- IP地址自动切换
- GZip压缩减少传输的数据包大小, 文本压缩率极大
请求
OkHttp必须创建一个Request
对象才能发送网络请求, Request对象可以添加请求所需的地址,以及请求头
网络请求方式常见的有Post和Get方式
Get
OkHttp默认是Get请求
Request request = new Request.Builder() .url(请求地址) .build();
Post请求
Post请求还需要创建一个请求体对象 RequestBody
, RequestBody里面可以添加Post请求所需的数据
Post请求又分为表单请求和Json请求
表单请求
表单请求是键和值想对应的数据提交方式
// 方式1RequestBody requestBody = FormEncodingBuilder().add().builder();// 方式2 RequestBody requestBody = new FormBody.Builder() .add("username", mUsername) .add("password", mPassword) .build();Request request = new Request.Builder() .url(url) .Post(requestBody) .build();
- Json请求
RequestBody requestBody = RequestBody.create(Json, json);Request request = new Request.Builder() .url(url) .Post(requestBody) .build();
响应
OkHttp请求操作完成后会返回一个Response
对象, Response包含响应信息
Response
Response response = okHttpClient.newCall(request).execute();response.isSuccessful() // 请求是否成功response.code// 状态码
响应体
ResponseBody body = response.body(); // 获取请求体
执行网络请求
执行请求操作, OkHttp提供了同步和异步请求
同步请求
try { // 获取响应对象 Response response = okHttpClient.newCall(request).execute(); if (response.isSuccessful()) { // body为请求数据 ResponseBody body = response.body(); }} catch (IOException e) { e.printStackTrace();}
异步请求
okHttpClient.newCall(request).enqueue(new Callback() { /** * 请求失败 * @param call * @param e */ @Override public void onFailure(Call call, IOException e) { } /** * 请求成功 * @param call * @param response 响应体 * @throws IOException */ @Override public void onResponse(Call call, Response response) throws IOException { // 异步请求如果需要更新UI需要回到主线程 }});
0 0
- OkHttp
- okhttp
- OkHttp
- OkHttp
- OkHttp
- okhttp
- OKHTTP
- okhttp
- Okhttp
- okHttp
- OkHttp
- okhttp
- Okhttp
- okhttp
- OkHttp
- okhttp
- okhttp
- okhttp
- wax - 3
- React Native Navigator 的路由以及页面跳转
- 移动端如何写一个相对靠谱的倒数秒杀时间或者说开售时间
- JavaScript[01.03]
- GitHub上README.md教程
- OkHttp
- 利用UIWindow创建悬浮按钮
- VS2015 git的使用
- Android 仿美团网,大众点评购买框悬浮效果之修改版
- .NET 4.0中使用内存映射文件实现进程通讯
- android
- Glide
- 动态添加菜单
- Java变量的初始化问题探究