OkHttp3-基本用法(转)
OkHttp
一个支持Http和Http/2,可适用于Android以及Java应用的网络请求客户端。
概述
Http是现代网络应用的所常用的协议,它是一种数据传输的媒介。执行高效的Http代码可以让应用程序以更快的加载速度以及更少的带宽去请求数据。
OkHttp是一种高效的Http请求客户端,通常情况下它拥有以下特点:
- 当同时向同一个主机发送大量请求时,Http/2允许并支持共用一个Socket。
- 连接池的存在可以有效减少请求的所需的准备工作
- 可自动压缩下载数据,降低下载数据的大小
- 自动缓存响应数据,可以避免每次都通过网络去请求网络数据
OkHttp可以在请求出现问题时 坚守 灵活处理:针对于常见的连接问题,OkHttp会默认自动帮应用做修复处理。如果你的服务器有多个IP地址,OkHttp将会在请求失败时,不断尝试连接另外的IP地址。当服务器同时支持IPv4+IPv6,或者主机服务器出现数据故障时,这是非常有用的。如果握手失败,OkHttp会自动初始化一个带有TLS(SNI, ALPN)协议的新连接向支持TLS 1.0的服务器再次发起请求。
OkHttp的用法是非常简单的。OkHttp的请求/响应的Api被设计成建造者模式 ,并且它拥有不变性。它既可以在主线程中调用相应的闭包,也可以在子线程中去回调相应方法。
OkHttp支持Android 2.3以上的版本。对于Java 应用,最小版本需要JDK 1.7以上。
下载
okhttp-3.8.0.jar包下载链接
如果你通过向应用导入Jar包的方式集成,你必须同时集成Okio,Okio为OkHttp提供了快速的I/O操作以及可调整大小的缓存区。
MAVEN
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.8.0</version>
</dependency>
GRADLE
compile 'com.squareup.okhttp3:okhttp:3.8.0'
范例
通过Get方法去请求一个URL
下面的代码通过一个URL去下载一个文本,并且打印出文本内容。
public class GetExample {
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request 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方法向服务器传递数据
下面代码展示了向服务器上传数据的操作。
public class PostExample {
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
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);
}
}
其他可参考:https://blog.csdn.net/u012124438/article/details/54236967
链接:https://www.jianshu.com/p/7919cd2685d3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
OkHttp3-基本用法(转)的更多相关文章
- JAVA学习笔记 (okHttp3的用法)
最近的项目中有个接口是返回文件流数据,根据我们这边一个验签的插件,我发现里面有okHttpClient提供了Call.Factory,所以就学习了下okHttp3的用法. 1.概述 okhttp是一个 ...
- Http请求-okhttp3基本用法
简介 HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽.OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主 ...
- Android零碎知识点
1.android:foreground="?attr/selectableItemBackground" ###设置水波纹效果 2.android:contentDescri ...
- Picasso 完美兼容 OkHttp3.3,缓存优化两不误
Tamic 专注移动开发!更多文章请关注http://www.jianshu.com/p/6241950f9daf csdn: http://blog.csdn.net/sk719887916/art ...
- 关于HttpClient,HttpURLConnection,OkHttp的用法
1 HttpClient入门实例 1.1发送get请求 /** * HttpClient发送get请求 * @param url 请求地址 * @return * @throws IOExceptio ...
- http请求工具-OkHttp用法
OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络.这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCan ...
- [转]OkHttp3 最有营养的初级教程
一.前言 自从Android4.4开始,google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android6.0之后的SDK中google更是移除了对于HttpCl ...
- Okhttp3上传多张图片同时传递参数
之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片. 最近做项目,打算换个方法上传图片. Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片. ...
- Retrofit2与RxJava用法大全
Retrofit2是square公司出品的一个网络请求库,网上有很多相关的介绍.我很久以前都想去研究了,但一直都有各种事情耽搁,现在就让我们一起去捋一捋,这篇主要讲解Retrofit2与RxJava的 ...
- Okhttp3源码解析(3)-Call分析(整体流程)
### 前言 前面我们讲了 [Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f) [Okhttp3源码解析(1)-OkHttpClient分析]( ...
随机推荐
- 网站循环加载监控-C#
背景: 公司有一个报表的网站,服务器或系统不太稳定,导致客户有时候查看报表网址的时候网站打不开或者打开时间过长,影响用户体验 需求: 通过程序循环打开网址了解加载情况,使用谷歌浏览器内核.,程序开发不 ...
- RabbitMQ 的安装配置
环境:Ubuntu16 linux系统,ERlang语言的源码包 :otp_src_22.0.tar.gz,rabbitMQ安装包:rabbitmq-server-generic-unix-3.7.1 ...
- Zero Array---思维题
链接 submit B. Zero Array time limit per test 1 second memory limit per test 256 megabytes inpu ...
- Rsync快速入门实例(转)
三种主要数据传输方式 单主机本地目录间数据传输(类似cp) Local: rsync [OPTION...] SRC... [DEST] 借助rcp,ssh等通道来传输数据(类似scp) Access ...
- 树莓派3b 串口乱码的一个解决思路
首先确认波特率设置正确,为115200 向microSD卡中烧录树莓派官方的镜像后,先不要急着把它插入树莓派中. 在电脑上打开microSD卡,按如下方式修改config.txt和cmdline.tx ...
- 并不对劲的CF480E:Parking Lot
题目大意 有一个\(n\times m\)的网格,每个位置是黑色或者白色.\(k\)个操作,每个操作是将一个白格子染黑,操作后输出当前最大的白色正方形的边长.\(n,m,k\leq 2\times 1 ...
- 作业2:java内存模型图示
参考:http://www.infoq.com/cn/minibooks/java_memory_model?utm_source=infoq&utm_campaign=user_page&a ...
- HTML——b i del a p img h1 h2 h3 h4 h5 h6 hr ol ul 标签的使用方法详解
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- sql的关键字
整理一下sql的关键字,一直都在用,只是很少去整理,所以今天简单整理一下,主要是整理CRUD的一些关键字. 写在前面:sql 不区分大小写 select 简单查询语句 select columnNam ...
- 深入理解hive(1)
1.安装和配置: 1.1可以通过这个下载链接去下载hive源码来安装一个一个稳定版本的hive.https://cwiki.apache.org/confluence/display/Hive/Get ...