概述

okhttp 官网:https://square.github.io/okhttp/

HTTP是现代应用网络的方式。这就是我们交换数据和媒体的方式。有效地执行HTTP可以加快您的负载并节省带宽。

OkHttp是一个默认有效的HTTP客户端:

  • HTTP / 2支持允许对同一主机的所有请求共享套接字。
  • 连接池减少了请求延迟(如果HTTP / 2不可用)。
  • 透明GZIP缩小了下载大小。
  • 响应缓存完全避免网络重复请求。
    当网络很麻烦时,OkHttp坚持不懈:它将从常见的连接问题中无声地恢复。如果您的服务有多个IP地址,如果第一次连接失败,OkHttp将尝试备用地址。这对于IPv4 + IPv6和冗余数据中心中托管的服务是必需的。OkHttp启动具有现代TLS功能(SNI,ALPN)的新连接,并在握手失败时回退到TLS 1.0。

使用OkHttp很简单。它的请求/响应API采用流畅的构建器和不变性设计。它支持同步阻塞调用和带回调的异步调用。

本文只是简单的试用一下,两个小demo。

<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>3.11.0</version>
</dependency>

get请求

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;import java.io.IOException;public class GetExample {OkHttpClient client = new OkHttpClient();//创建okhttp客户端String run(String url) throws IOException {//创建requestRequest request = new Request.Builder().url(url).build();//同步执行请求try (Response response = client.newCall(request).execute()) {return response.body().string();//返回响应}}public static void main(String[] args) throws IOException {GetExample example = new GetExample();String response = example.run("https://raw.github.com/square/okhttp/master/README.md");System.out.println(response);}
}

post请求

import okhttp3.*;import java.io.IOException;public class PostExample {//指定请求头,json格式public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");OkHttpClient client = new OkHttpClient();String post(String url, String json) throws IOException {//创建请求体RequestBody body = RequestBody.create(JSON, json);//创建requestbodyRequest request = new Request.Builder().url(url).post(body).build();//同步执行请求try (Response response = client.newCall(request).execute()) {return response.body().string();}}//拼接json格式参数String bowlingJson(String player1, String player2) {return "{'winCondition':'HIGH_SCORE',"+ "'name':'Bowling',"+ "'round':4,"+ "'lastSaved':1367702411696,"+ "'dateStarted':1367702378785,"+ "'players':["+ "{'name':'" + player1 + "','history':[10,8,6,7,8],'color':-13388315,'total':39},"+ "{'name':'" + player2 + "','history':[6,10,5,10,10],'color':-48060,'total':41}"+ "]}";}public static void main(String[] args) throws IOException {PostExample example = new PostExample();String json = example.bowlingJson("Jesse", "Jake");String response = example.post("http://www.roundsapp.com/post", json);System.out.println(response);}
}

同步/异步请求

上面两个实例都是同步请求,下面看看异步请求如何编写:

//异步请求
Call call = client.newCall(request);
call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {System.out.println(e.getMessage());}@Overridepublic void onResponse(Call call, okhttp3.Response response) throws IOException {String string = response.body().string();System.out.println(string);}
});

OKhttp3 简单使用相关推荐

  1. okhttp3简单使用

    文章目录 一.简介 1.特性 二.导入依赖 三.创建 get 请求 四.创建 post 请求 五.创建异步请求(MultipartBody 表单) 六.FormBody 表单参数 七.OkhttpCo ...

  2. OkHttp3简单使用:请求和响应,post,get

    一,HTTP请求.响应报文格式 要弄明白网络框架,首先需要先掌握Http请求的,响应的报文格式. HTTP请求报文格式: HTTP请求报文主要由请求行.请求头部.请求正文3部分组成. request. ...

  3. Android网络框架okhttp3简单封装

    1:在demo得build文件中添加依赖(这里以3.8.1版本为例) dependencies {compile 'com.squareup.okhttp3:okhttp:3.8.1' } 2:对网络 ...

  4. 添加okhttp+android+studio,OKHTTP3 简单使用(一) 介绍及Android Studio集成

    HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽.OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主机地址 ...

  5. 【OKHTTP3】OKHTTP3使用GET和POST

    一.参考资料 OKHTTP3 简单使用(三) POST方法 | JesseHu Blog 使用OKHTTP方式发送POST请求,获取返回的JSON串 - 简书 OkHttp工具类 - 风中追风_lon ...

  6. okHttp3连接池简单使用

    一.概述: HTTP是现代应用网络的方式.这就是我们交换数据和媒体的方式.有效地执行HTTP可以加快您的负载并节省带宽. OkHttp是一个默认有效的HTTP客户端: HTTP / 2支持允许对同一主 ...

  7. 安卓Okhttp3源码的简单分析

    前言:现在的Android项目基本上都是以OkHttp来进行网络通信的(retrofit也是基于okhttp的) 下面记录下okhttp3中的一些实现方式和原理. 工作流程 以这张图出发,说一下几个注 ...

  8. AutoCompleteTextView+Okhttp3+ListView实现简单的网络数据搜索展示

    首先用OKHttp3获取网络上的数据,并保存到Serializeable的Bean类集合 OkHttpClient client = new OkHttpClient();Request reques ...

  9. Android Banner(无限轮播图)控件的简单使用(网络数据OkHttp3)

    一言不合就上图 banner是第三方集成好的直接注入依赖就可以用 老套路先注入依赖: //banner这个版本才是王道(我的studio是2.3.3)compile 'com.youth.banner ...

最新文章

  1. python画图程序-python画图之“小海龟”turtle
  2. MyEclipse运行tomcat提示严重错误 严重: Error starting endpoint java.lang.Exception: Socket
  3. php实现sql server数据导入到mysql数据库_php实现SQL Server数据导入Mysql数据库(示例)...
  4. linux变量赋值用中括号,Shell脚本定义变量和重新赋值
  5. 【win10】如何在桌面上,显示我的电脑
  6. SAP 电商云 Spartacus 产品明细页面的 OCC API 是如何被触发的
  7. esp32 怎么分配freertos 堆栈大小_深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化...
  8. 进击的Objective-C--------Objective-C基础(-)
  9. 剑指Offer09. 用两个栈实现队列
  10. 牛客提高R5 A.同余方程
  11. [转载] 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
  12. mysql中表结构语句_mysql中表数据与表结构复制语句
  13. 基于Caffe的人脸关键点检测实现
  14. 微波雷达感应模块,智能洗衣机雷达技术方案,自动感应开门应用
  15. python求自定义函数的导数
  16. 数字后端概念——Wire Shape
  17. 揭露富爸爸背后真正的秘密
  18. POJ 2210 Metric Time G++
  19. 简单理解与实验生成对抗网络GAN
  20. NETBASE DAY05(04):设计大型网络拓扑图

热门文章

  1. 记一次“登录Mysql数据库输入正确密码但数据库显示密码错误”问题的处理
  2. 计算机科学研究工作,近三年研究工作小结 - 北京大学计算机科学技术研究所.pdf...
  3. python-pyglet游戏之minecraft远古版
  4. word2vec_gensim 中文处理 小试牛刀
  5. 【论文阅读003】:CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
  6. welcome-file-list 与SpringMvc 的 DispatcherServlet
  7. Windows 下创建目录链接 映射文件的方式不想改变路径直接使用映射路径的方式
  8. 专访|这家传统保险中介如何借力大数据优化“卖保险”流程?
  9. MS17-010 Eternal Blue(永恒之蓝)”, 修复补丁下载汇总地址!
  10. java设置鼠标轮滑,Win10专业版的鼠标滑轮速度怎么设置?Win10专业版鼠标轮滑设置教程...