IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> okhttp3学习与使用 -> 正文阅读

[网络协议]okhttp3学习与使用

okhttp3学习与使用

介绍

HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽,OkHttp是一个高效且十分火热的HTTP客户端。

简单使用

在postman里测试好请求后,直接可以选择复制,新版的postman语法就是okhttp3(老版的是okhttp2)
在这里插入图片描述

功能

OkHttpClient类: OkHttp客户端类,用来构建请求发起类Call,设置超时,设置缓存,设置拦截器等

OkHttpClient,是OkHttp的客户端类,该类使用的是构建者模式,所以通常情况下,我们使用new OkHttpClient.Builder()…build()方式来创建OkHttpClient的实例,OkHttpClient的属性以及相关方法,大部分体现在OkHttpClient.Builde中,所以我们学习OkHttpClient,就先学习OkHttpClient.Builder构建者,为了方便文章阅读,我们只挑选重点需要关注的代码进行分析。

//跳过HTTPS验证
OkHttpClient.Builder OBuilder = new OkHttpClient().newBuilder()
		.connectTimeout(10000L, TimeUnit.SECONDS)  // 最大连接时间
		.readTimeout(10000L, TimeUnit.SECONDS)     // 最大读取时间
		.writeTimeout(10000L, TimeUnit.SECONDS);   // 最大写入时间
if (targetUrl.startsWith("https")) {
	// 添加SSL证书信任     【SSLSocketClient】
	builder = builder.sslSocketFactory(SSLSocketClient.getSSLSocketFactory(), SSLSocketClient.getX509TrustManager());
}
OkHttpClient client = builder.build();

Request类: OkHttp请求包装类,用来封装网络请求信息及请求体。
比如请求方式(GET、POST、DELETE、PUT等),url,headers,请求参数等,服务器端最终接受并解析的请求消息,就是由该类提供。OkHttpClient获取Call对象时,需要传入Request作为参数;
RequestBody Request中,当请求需要传入请求体,比如向服务器端发送表单,发送json数据,上传图片,提交数据流等,就需要用到RequestBody(请求体)了
Headers 作为Http请求最重要的两个部分。Headers使用的也是构建者模式,所以Headers是完全可以通过Headers.Builder来创建,添加请求头部信息的。既然他叫做Headers,那他应该有一个专门存储头部信息的容器,用来存储我们常见的诸如:Content-Type、Cookie、Accept等键值对

targetUrl = "https://XXX" + uri;
// POST
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, data);
Request.Builder rBudlder= new Request.Builder().url(targetUrl).post(body);
// GET
String urlParameter = request.getQueryString();
Request.Builder rBudlder= new Request.Builder().url(targetUrl + "?" + urlParameter).method("GET", null);
// 其他
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, data);
Request.Builder rBudlder= new Request.Builder().url(targetUrl).method(request.getMethod(), body);

//Header
Map<String, String> headers = new HashMap<String, String>();
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
	String key = (String) headerNames.nextElement();
	String value = request.getHeader(key);
	headers.put(key, value);
	rBudlder = method.addHeader(key, value);
}	
// 设置来源
rBudlder.addHeader("Origin", "https://XXX");
rBudlder.addHeader("Referer", "https://XXX/XX");	

Request req = rBudlder.build();

Call
每次发起请求的时候,都是通过Call对象调用他的同步请求execute()方法或者异步请求enqueue()方法,发起了请求。我们可以把Call当成OkHttp提供给我们的一个面对开发者的网络请求发起者,通过OkHttpClient对象和Request对象,创建了Call,然后由Call对象发出同步或者异步请求
Response Response与Request的结构非常相似,也使用了构建者模式,拿到请求结果,意味着任务完成。

// 代码衔接上面
Response resp = client.newCall(req).execute();
String res = resp.body().string();
System.out.println("返回数据:" + res);

参考: OkHttp3.0(二)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:30:35  更:2022-04-01 00:31:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:24:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码