一.添加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 网络的使用相关推荐

  1. 极客HTTP协议学习笔记破冰篇(1-7)

    极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...

  2. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  3. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  4. Linux学习笔记---命令篇

    Linux学习笔记-命令篇 本笔记是根据尚硅谷的Linux视频,经过自己的总结得出来的笔记,分为两个大章节,一-四章讲的是Linux的文件目录结构.vim编辑器.网络配置和系统管理.进程和服务.第二个 ...

  5. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  6. MySQL学习笔记-基础篇2

    MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...

  7. Redis学习笔记②实战篇_黑马点评项目

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  8. 《攻防世界》学习笔记——web篇

    <攻防世界>学习笔记--web篇 01 Robots协议 02 BACKUP 03 Cookie 04 disabled_button(chrome游览器F12指南) 05 弱口令 06 ...

  9. [mmu/cache]-ARM MMU的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...

  10. [mmu/cache]-ARM cache的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...

最新文章

  1. Angew. Chem. Int. Ed. | 分子机器学习是合成化学的未来吗?
  2. ICML2020 | 基于贝叶斯元学习在关系图上进行小样本关系抽取
  3. 学计算机的考研还是工作室,毕业后,考研和工作哪个更有出路,你后悔了吗?...
  4. A good debug parameter - sap-ds-debug=true
  5. PLSQL_案例优化系列_学会应用工具进行SQL整体优化(案例11)
  6. python 3.5 django 笔记(六)修改博客标题与内容
  7. Java实现的日历(原创)
  8. 变分模态分解(VMD)运算步骤及源码解读
  9. 操作失败,错误为 0x00000bcb
  10. logo是啥_logo什么意思_LOGO是什么意思
  11. Campass + Scss ,让我们更优雅的编写CSS
  12. 项目小记录—拼音码demo
  13. RFC请求注解(Request for Comments)介绍|internet最重要的文献资源
  14. 概率论——连续性随机变量及分布函数的定义
  15. SDK manger中只有几个配置????
  16. L2TP/IPSec 服务端安装
  17. 广州图书馆——携程评论爬取
  18. Windows Phone : 三屏一云战略的新里程碑
  19. 游戏平台搭建之安卓资源优化
  20. mysql数据库modify_mysql数据库中 change 与 modify 的区别

热门文章

  1. Vue搭脚手架及创建项目
  2. Linux下定时备份数据库
  3. 腰围尺寸2尺1、2、3、4、5、6、7、8寸分别等于是多少厘米/英寸(对照参考表)
  4. 裤子尺码对照表eur40_裤子尺寸对照表,衣服尺寸对照表,服装尺寸对照表- 尺码对照表...
  5. 对接腾讯广告平台系统开发(半自动化广告投放系统)
  6. php 聚合广告平台,带统计功能的广告管理系统PHP源码 多维度投放策略 多种风格后台...
  7. 天邑TY1608_S905L3B_支持RTL8822CS、MT7668_线刷/卡刷_刷机固件包
  8. 怎么重置计算机网络设置密码,怎么重新设置wifi密码_如何重新设置无线密码?-192路由网...
  9. java实现wps函数IRR,Excel表格技巧—如何用IRR函数算内部收益率
  10. Android多媒体相关框架