当前位置: 首页 > news >正文

使用OKHttpClient访问网络

使用OKHttpClient前要引入依赖:

在build.gradle(Moduel :app)中添加

implementation 'com.squareup.okhttp3:okhttp:3.14.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.1'
implementation 'com.squareup.okio:okio:1.6.0'

1. GET(同步或异步)

        //创建OKHttpClientOkHttpClient okHttpClient=new OkHttpClient.Builder().connectTimeout(50, TimeUnit.SECONDS).readTimeout(50,TimeUnit.SECONDS).writeTimeout(50,TimeUnit.SECONDS).build();//创建请求Request request=new Request.Builder().url( new URL("http://www.baidu.com") ).get() //GET方式用.build();//创建CallCall call=okHttpClient.newCall(request);//同步Response response=call.execute();Boolean bool=response.isSuccessful();//判断是否连接成功ResponseBody responseBody=response.body();//获取ResponseBody//异步Response response=call.enqueue(new Callback() {public void onFailure(Call call, IOException e) {//连接失败调用}public void onResponse(Call call, Response response) throws IOException {//连接成功调用ResponseBody responseBody=response.body();//获取ResponseBody}});

2. POST(同步或异步)

        //创建OKHttpClientOkHttpClient okHttpClient=new OkHttpClient.Builder().connectTimeout(50, TimeUnit.SECONDS).readTimeout(50,TimeUnit.SECONDS).writeTimeout(50,TimeUnit.SECONDS).build();//创建RequestBody或FormBody或MultipartBodyRequestBody requestBody = RequestBody.create( MediaType.parse("application/x-www-form-urlencode;charset=utf-8"), "username="+ URLEncoder.encode("myUserName")+"&password="+URLEncoder.encode("123456"));FormBody formBody = new FormBody.Builder().add("name","myUserName").add("sex","男").add("age","20").build();MultipartBody multipartBody=new MultipartBody.Builder().addFormDataPart("name","myUserName").addFormDataPart("sex","女").addFormDataPart("File",file.toString(),requestBody).build();//创建请求Request request=new Request.Builder().url( new URL("http://www.baidu.com") ).post(requestBody) //POST方式用,参数为RequestBody或FormBody或MultipartBody.build();//创建CallCall call=okHttpClient.newCall(request);//同步Response response=call.execute();Boolean bool=response.isSuccessful();//判断是否连接成功ResponseBody responseBody=response.body();//获取ResponseBody//异步Response response=call.enqueue(new Callback() {public void onFailure(Call call, IOException e) {//连接失败调用}public void onResponse(Call call, Response response) throws IOException {//连接成功调用ResponseBody responseBody=response.body();//获取ResponseBody}});

RequestBody.create()中的参数 MediaType的 .pase()方法的参数决定了网络文件的类型及编码方式

MultipartBody可添加多种类型数据

3. Response及ResponseBody的使用

    //获取返回类型String contentType = response.header("Content-Type");//判断返回值类型if(contentType!=null&&contentType.equals("application/octet-stream")){//返回类型为 流ResponseBody responseBody = response.body();InputStream inputStream=responseBody.byteStream();}else if(contentType!=null&&contentType.equals("application/json")){//返回类型为 jsonResponseBody responseBody = response.body();String json=responseBody.toString();}

4. 网络文件类型

text/html   HTML格式
text/pain   纯文本格式
image/jpeg  jpg图片格式
application/json   JSON数据格式
application/octet-stream   二进制流数据
application/x-www-form-urlencode   form表单encType属性的默认格式,表单数据以Key/value的形式发送到服务器端
multipart/form-data   表单上传文件的格式 

相关文章:

使用OKHttpClient访问网络

使用OKHttpClient前要引入依赖: 在build.gradle(Moduel :app)中添加 implementation com.squareup.okhttp3:okhttp:3.14.1 implementation com.squareup.okhttp3:logging-interceptor:3.14.1 implementation com.squareup.okio:okio:1.6.0 1. GET(同步…...

maui 开发AMD CPU踩的坑。

刚换的 amd R7735HS 笔记本,8核16线程,32GB内存。性能得实强悍 。 当需要发布iOS版本时发现,我没有macos ,那就安装个vmware 吧。看了一下Apple 要求以后的发布的APP需要以xcode14.3或以后版本开发的版本,但xcode14.3…...

宝塔反代openai官方API接口详细教程,502 Bad Gateway问题解决

一、前言 宝塔反代openai官方API接口详细教程,实现国内使用ChatGPT502 Bad Gateway问题解决, 此方法最简单快捷,没有复杂步骤,不容易出错,即最简单,零代码、零部署的方法。 二、实现前提 一台海外VPS服务…...

【leetocde】128. 最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出:4 …...

【Vue3】动态 class 类

如果你想在 Vue.js 中动态设置元素的 class 类名,你可以使用以下两种主要方式: 绑定一个动态的 class 对象:你可以使用 v-bind 或简写的 : 来绑定一个包含类名的对象,其中类名的键是类名字符串,值是一个布尔值或计算属…...

【Redis】redis基本数据类型详解(String、List、Hash、Set、ZSet)

目录 RedisString(字符串)List(列表)Hash(字典)Set(集合)ZSet(有序集合) Redis Redis有5种基本的数据结构,分别为:string(字符串)、list(列表)、set(集合)、hash(哈希&a…...

ubuntu源码安装aria2

github:GitHub - aria2/aria2: aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. 发行说明:GitHub - aria2/aria2 at releas…...

【多任务案例:猫狗脸部定位与分类】

【猫狗脸部定位与识别】 1 引言2 损失函数3 The Oxford-IIIT Pet Dataset数据集4 数据预处理4 创建模型输入5 自定义数据集加载方式6 显示一批次数据7 创建定位模型8 模型训练9 绘制损失曲线10 模型保存与预测 1 引言 猫狗脸部定位与识别分为定位和识别,即定位猫狗…...

.Net 锁的介绍

在.NET中,有多种锁机制可用于多线程编程,用来确保线程安全和共享资源的同步。以下是.NET中常见的锁机制: 1. **Monitor(互斥锁):** `Monitor` 是.NET中最基本的锁机制之一。它使用 `lock` 关键字实现,可以确保在同一时刻只有一个线程能够访问被锁定的代码块。`Monitor`…...

Office 2021 小型企业版商用办公软件评测:提升工作效率与协作能力的专业利器

作为一名软件评测人员,我将为您带来一篇关于 Office 2021 小型企业版商用办公软件的评测文章。在这篇评测中,我将从实用性、使用场景、优点和缺点等多个方面对该软件进行客观分析,在专业角度为您揭示它的真正实力和潜力。 一、实用性&#xf…...

Monkey测试

一:测试环境搭建 1:下载android-sdk_r24.4.1-windows 2:下载Java 3:配置环境变量:关于怎么配置环境变量(百度一下:monkey环境搭建,) 二:monkey测试&#xff1…...

wzx-jmw:NFL合理,但可能被颠覆。2023-2024

As well known by all, NFL is ... 没有免费的午餐理论 No Free Lunch Theorem_免费午餐理论-CSDN博客 However, if we......

密码技术 (5) - 数字签名

一. 前言 前面在介绍消息认证码时,我们知道消息认证码虽然可以确认消息的完整性,但是无法防止否认问题。而数字签名可以解决否认的问题,接下来介绍数字签名的原理。 二. 数字签名的原理 数字签名和公钥密码一样,也有公钥和私钥&am…...

php实战案例记录(10)单引号和双引号的用法和区别

在 PHP 中,单引号和双引号都被用于表示字符串。它们有一些共同之处,但也有一些明显的区别。 解析变量: 双引号允许解析变量,而单引号不会。在双引号中,你可以直接在字符串中插入变量,而不需要进行额外的连接…...

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石②

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石② 第十九章 驱动程序基石②19.3 异步通知19.3.1 适用场景19.3.2 使用流程19.3.3 驱动编程19.3.4 应用编程19.3.5 现场编程19.3.6 上机编程19.3.7 异步通知机制内核代码详解 19.4 阻塞与非阻塞19.4.1 应用编程19.4.2 驱动编程…...

trycatch、throw、throws

在Java中,try-catch、throw和throws是用于处理异常的重要关键字和机制,它们的作用如下: try-catch:try-catch 是用于捕获和处理异常的语句块。在try块中放置可能引发异常的代码。如果在try块中的代码引发了异常,控制流会跳转到与异常类型匹配的catch块。在catch块中,可以…...

问 ChatGPT 关于 GPT 的事情:数据准备篇

一、假如你是一名人工智能工程师,手里有一个65B的GPT大模型,但你需要一个6B左右的小模型,你会怎么做? 答:作为人工智能工程师,如果我手里有一个65B的GPT大模型,而我需要一个6B左右的小模型&…...

leetcode_17电话号码的组合

1. 题意 输出电话号码对应的字母左右组合 电话号码的组合 2. 题解 回溯 class Solution { public:void gen_res(vector<string> &res, vector<string> &s_m,string &digits, string &t, size_t depth) {if (depth digits.size()) {if ( !t.em…...

记录使用vue-test-utils + jest 在uniapp中进行单元测试

目录 前情安装依赖package.json配置jest配置测试文件目录编写setup.js编写第一个测试文件jest.fn()和jest.spyOn()jest 解析scss失败测试vuex$refs定时器测试函数调用n次手动调用生命周期处理其他模块导入的函数测试插槽 前情 uniapp推荐了测试方案dcloudio/uni-automator&…...

《C和指针》笔记30:函数声明数组参数、数组初始化方式和字符数组的初始化

文章目录 1. 函数声明数组参数2. 数组初始化方式2.1 静态初始化2.2 自动变量初始化 2.2 字符数组的初始化 1. 函数声明数组参数 下面两个函数原型是一样的&#xff1a; int strlen( char *string ); int strlen( char string[] );可以使用任何一种声明&#xff0c;但哪个“更…...

Docker+iredmail搭建企业级邮件服务器全流程(附常见问题排查)

Dockeriredmail搭建企业级邮件服务器全流程指南 邮件系统作为企业日常沟通的核心基础设施&#xff0c;其稳定性和安全性直接影响业务运转效率。传统邮件服务器部署往往需要复杂的配置和漫长的调试周期&#xff0c;而Docker容器化技术结合iredmail开源邮件解决方案&#xff0c;为…...

ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南

ViGEmBus虚拟手柄驱动&#xff1a;Windows内核级游戏控制器模拟核心技术解析与应用指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows…...

RWKV7-1.5B-g1a多场景落地:HR部门用它自动生成岗位JD要点与面试问题清单

RWKV7-1.5B-g1a多场景落地&#xff1a;HR部门用它自动生成岗位JD要点与面试问题清单 1. 为什么HR部门需要AI助手 招聘工作中有大量重复性文案工作&#xff0c;比如&#xff1a; 为不同岗位编写职位描述(JD)设计结构化面试问题整理岗位核心能力要求制作候选人评估标准 传统方…...

钉钉机器人Markdown表格发送实战:绕过限制的创意方案

1. 钉钉机器人Markdown表格发送的痛点与需求 很多团队都在用钉钉机器人自动推送数据报表&#xff0c;但官方提供的消息类型里并没有直接支持表格格式。我见过不少同事为了发个简单的数据表格&#xff0c;要么截图发图片&#xff08;无法复制数据&#xff09;&#xff0c;要么上…...

如何用3种方法让Fira Code字体提升你的编码效率?

如何用3种方法让Fira Code字体提升你的编码效率&#xff1f; 【免费下载链接】FiraCode Free monospaced font with programming ligatures 项目地址: https://gitcode.com/GitHub_Trending/fi/FiraCode 还在为代码中的箭头符号显示不清晰而烦恼&#xff1f;是否经常需要…...

ESP32 SPI性能调优指南:从80MHz时钟到DMA配置,避开那些坑

ESP32 SPI性能调优实战&#xff1a;突破80MHz时钟与DMA配置的终极指南 当你在ESP32项目中遇到SPI通信速度瓶颈时&#xff0c;是否曾为如何突破80MHz时钟限制而苦恼&#xff1f;是否在配置DMA时踩过各种坑&#xff1f;本文将带你深入ESP32 SPI性能优化的核心领域&#xff0c;从硬…...

生成式AI欺诈来袭,什么样的IP数据接口才能筑起防线?

某电商平台的风控系统发出预警&#xff1a;一个“新用户”正在批量下单高价商品&#xff0c;收货地址遍布全国&#xff0c;支付方式各不相同。但奇怪的是&#xff0c;这些订单的浏览行为、停留时间、点击轨迹几乎完全一致——这不是真人&#xff0c;而是生成式AI模拟的虚假用户…...

YOLOv11涨点改进| TPAMI 2026 |全网创新首发、注意力改进篇|引入ASSA自适应稀疏自注意力,顶刊万能涨点模块,含5种超强创新,适合目标检测,图像分割,图像分类,图像超分等任务高效涨点

一、本文介绍 🔥本文给大家介绍利用将 ASSA自适应稀疏自注意力模块改进 YOLOv11网络模型,可以显著提升模型的特征建模能力和复杂场景下的检测性能。ASSA通过自注意力机制在全局范围内建立不同空间位置之间的依赖关系,使网络能够充分利用全局上下文信息,从而增强特征表达能…...

从‘跟网’到‘构网’:手把手教你用MATLAB/Simulink搭建虚拟同步机(VSG)仿真模型(附模型下载)

从零构建虚拟同步机&#xff1a;MATLAB/Simulink实战指南 电力电子工程师们正面临一个新时代的挑战——如何让逆变器从被动"跟网"转变为主动"构网"。想象一下&#xff0c;当你第一次在示波器上看到自己搭建的虚拟同步机模型成功响应电网频率波动时&#xf…...

告别裸机!用状态机思路重构你的51单片机温度监测程序(以DS18B20为例)

告别裸机&#xff01;用状态机思路重构你的51单片机温度监测程序&#xff08;以DS18B20为例&#xff09; 在嵌入式开发中&#xff0c;51单片机因其简单易用、成本低廉而广受欢迎。但当项目复杂度上升时&#xff0c;传统的"while循环延时"式代码往往会陷入维护噩梦——…...