学习笔记 Tianmao 篇 OkHttp 网络的使用
一.添加okhttp的dependence依赖:
//okhttp
compile 'com.squareup.okhttp:okhttp:2.5.0'
//gson
compile 'io.github.openfeign:feign-gson:9.3.1'
二.OkHttp的操作
1.创建客户端 OkHttpClient
OkHttpClient okHttpClient=new OkHttpClient();
2.使用Get()方式 或 Post()(带参数)方式访问
1>.Get()访问
1.请求对象
Request request = new Request.Builder().url(url).build();
2.响应对象
同步,execute()方法还是在这个线程并没有 开启子线程 所以 如果这代码是在主线程里是会报错的
Response response = okHttpClient.newCall(request).execute();异步,enqueue()方法开启子线程 Response response = okHttpClient.newCall(request).enqueue(new Callback(){@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(Response response) throws IOException {获取响应response.body()返回ResponseBody类enqueue() 开一个子线程进行网络执行部分 这里要注意操作到主线程 这样这里就可以写UI操作了 具体下一篇会讲到}});
3.获取响应
response.body()返回ResponseBody类 (注:用了异步就直接可以在onResponse里操作)
response.body().string(); 返回Stringresponse.body().byteStream(); 返回 inputStreamresponse.body().bytes(); 返回二进制字节数组
2>.Post() 提交键值对 访问
//键值对 初始化添加各个属性 add(String name, String value)
RequestBody formBody = new FormEncodingBuilder()
.add(“属性名”, “属性值”)
.add(“name”, “bug”)
.build();
1.请求对象
与get的不同点 提交参数post()我们这里提交一个formBody
Request request = new Request.Builder().url(url).post(formBody ).build();
2.响应对象
同步,execute()方法还是在这个线程并没有 开启子线程 所以 如果这代码是在主线程里是会报错的
Response response = okHttpClient.newCall(request).execute();异步,enqueue()方法开启子线程 Response response = okHttpClient.newCall(request).enqueue(new Callback(){@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(Response response) throws IOException {获取响应response.body()返回ResponseBody类enqueue() 开一个子线程进行网络执行部分 我们可以在自定义callback类继承Callback 实现onResponse操作到主线程 这样这里就可以写UI操作了具体下一篇会讲到}});
3.获取响应
response.body()返回ResponseBody类 (注:用了异步就直接可以在onResponse里操作)
response.body().string(); 返回Stringresponse.body().byteStream(); 返回 inputStreamresponse.body().bytes(); 返回二进制字节数组
3>.Post() 提交 参数为Josn 访问
//json 定义
public static final MediaType JSON = MediaType.parse(“application/json; charset=utf-8”);
1.请求对象
与get的不同点 提交参数post()我们这里提交一个json
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder().url(url).post(body).build();
2.响应对象
同步,execute()方法还是在这个线程并没有 开启子线程 所以 如果这代码是在主线程里是会报错的
Response response = okHttpClient.newCall(request).execute();异步,enqueue()方法开启子线程 Response response = okHttpClient.newCall(request).enqueue(new Callback(){@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(Response response) throws IOException {获取响应response.body()返回ResponseBody类enqueue() 开一个子线程进行网络执行部分 我们可以在自定义callback类继承Callback 实现onResponse操作到主线程 这样这里就可以写UI操作了具体下一篇会讲到}});
3.获取响应
response.body()返回ResponseBody类 (注:用了异步就直接可以在onResponse里操作)
response.body().string(); 返回Stringresponse.body().byteStream(); 返回 inputStreamresponse.body().bytes(); 返回二进制字节数组
学习笔记 Tianmao 篇 OkHttp 网络的使用相关推荐
- 极客HTTP协议学习笔记破冰篇(1-7)
极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
- R语言学习笔记——入门篇:第一章-R语言介绍
R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...
- Linux学习笔记---命令篇
Linux学习笔记-命令篇 本笔记是根据尚硅谷的Linux视频,经过自己的总结得出来的笔记,分为两个大章节,一-四章讲的是Linux的文件目录结构.vim编辑器.网络配置和系统管理.进程和服务.第二个 ...
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- MySQL学习笔记-基础篇2
MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...
- Redis学习笔记②实战篇_黑马点评项目
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- 《攻防世界》学习笔记——web篇
<攻防世界>学习笔记--web篇 01 Robots协议 02 BACKUP 03 Cookie 04 disabled_button(chrome游览器F12指南) 05 弱口令 06 ...
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...
- [mmu/cache]-ARM cache的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...
最新文章
- Angew. Chem. Int. Ed. | 分子机器学习是合成化学的未来吗?
- ICML2020 | 基于贝叶斯元学习在关系图上进行小样本关系抽取
- 学计算机的考研还是工作室,毕业后,考研和工作哪个更有出路,你后悔了吗?...
- A good debug parameter - sap-ds-debug=true
- PLSQL_案例优化系列_学会应用工具进行SQL整体优化(案例11)
- python 3.5 django 笔记(六)修改博客标题与内容
- Java实现的日历(原创)
- 变分模态分解(VMD)运算步骤及源码解读
- 操作失败,错误为 0x00000bcb
- logo是啥_logo什么意思_LOGO是什么意思
- Campass + Scss ,让我们更优雅的编写CSS
- 项目小记录—拼音码demo
- RFC请求注解(Request for Comments)介绍|internet最重要的文献资源
- 概率论——连续性随机变量及分布函数的定义
- SDK manger中只有几个配置????
- L2TP/IPSec 服务端安装
- 广州图书馆——携程评论爬取
- Windows Phone : 三屏一云战略的新里程碑
- 游戏平台搭建之安卓资源优化
- mysql数据库modify_mysql数据库中 change 与 modify 的区别
热门文章
- Vue搭脚手架及创建项目
- Linux下定时备份数据库
- 腰围尺寸2尺1、2、3、4、5、6、7、8寸分别等于是多少厘米/英寸(对照参考表)
- 裤子尺码对照表eur40_裤子尺寸对照表,衣服尺寸对照表,服装尺寸对照表- 尺码对照表...
- 对接腾讯广告平台系统开发(半自动化广告投放系统)
- php 聚合广告平台,带统计功能的广告管理系统PHP源码 多维度投放策略 多种风格后台...
- 天邑TY1608_S905L3B_支持RTL8822CS、MT7668_线刷/卡刷_刷机固件包
- 怎么重置计算机网络设置密码,怎么重新设置wifi密码_如何重新设置无线密码?-192路由网...
- java实现wps函数IRR,Excel表格技巧—如何用IRR函数算内部收益率
- Android多媒体相关框架