当前位置: 首页 > 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;但哪个“更…...

双强联袂,数智共舞 | 中聚信 × 金蝶启联巅峰对话,共探财税未来新航道

3 月 26 日&#xff0c;由金蝶软件&#xff08;中国&#xff09;有限公司、贵州启联科技有限公司联合主办&#xff0c;中聚信财税技术研究中心协办的「AI 时代 先进管理用金蝶」主题峰会&#xff0c;在贵阳国际生态会议中心圆满落幕。这场聚焦制造企业数字化转型与 AI 赋能管理…...

设计师连夜删稿的真相:Onion Skin未启用导致版本错位!3分钟紧急修复+历史帧自动锚定脚本

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;设计师连夜删稿的真相&#xff1a;Onion Skin未启用导致版本错位&#xff01;3分钟紧急修复历史帧自动锚定脚本 当动画师在 Toon Boom Harmony 或 Adobe Animate 中反复导出“看似正确”的中间帧&#…...

STM32CUBEMX实战指南:串口DMA高效收发与自定义打印函数优化

1. 串口DMA基础与STM32CubeMX配置 第一次用STM32CubeMX配置串口DMA时&#xff0c;我对着密密麻麻的选项差点崩溃。后来发现只要掌握几个关键点&#xff0c;5分钟就能搞定稳定可靠的DMA通信。先解释下为什么需要DMA&#xff1a;当你用传统方式通过串口发送"Hello World&quo…...

从Distributed到Lumped:三种SPEF寄生模型,你的芯片时序分析该选哪一个?

芯片时序分析中的SPEF模型选择&#xff1a;精度与效率的终极权衡 在28nm以下工艺节点&#xff0c;互连线寄生效应导致的时序偏差可能占到整体时钟周期的30%以上。面对动辄数千万个net的现代SoC设计&#xff0c;工程师们不得不在模型精度与运行时间之间做出艰难抉择。就像一位资…...

终极指南:如何解决FanControl风扇突然“隐身“问题 - 快速恢复硬件识别的完整教程

终极指南&#xff1a;如何解决FanControl风扇突然"隐身"问题 - 快速恢复硬件识别的完整教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: http…...

2026 流量卡办理全攻略:从下单、激活到售后,新手一遍看懂不踩坑

现在人人都离不开手机流量&#xff0c;不管是日常刷视频、追剧观影&#xff0c;还是备用机上网冲浪&#xff0c;一张划算又正规的通用流量卡&#xff0c;已经成为大众刚需。但很多新手第一次在线办理优惠号卡&#xff0c;普遍一头雾水&#xff1a;分不清流量卡是否正规靠谱、办…...

XMly-Downloader-Qt5:跨平台喜马拉雅音频下载解决方案的技术重构与实现深度解析

XMly-Downloader-Qt5&#xff1a;跨平台喜马拉雅音频下载解决方案的技术重构与实现深度解析 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-…...

保姆级教程:在银河麒麟Normal模式下,用kysec_set给第三方软件‘开绿灯’

银河麒麟系统下第三方软件安全授权全流程指南 在国产操作系统逐步普及的今天&#xff0c;银河麒麟作为主流选择之一&#xff0c;其安全机制设计严谨但有时也会给日常运维带来挑战。最近连续三个项目部署中&#xff0c;我都遇到了相同的问题——开发团队提供的工具包在测试环境运…...

基于树莓派与ChatGPT打造私有智能音箱:从硬件选型到AI集成全攻略

1. 项目概述&#xff1a;打造一个会思考的智能音箱 如果你和我一样&#xff0c;对智能家居充满热情&#xff0c;但又对市面上那些“大厂”智能音箱的隐私策略和有限的对话能力感到不满&#xff0c;那么这个项目可能就是为你量身定做的。今天要聊的&#xff0c;是一个完全由自己…...

Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容

Seraphine&#xff1a;你的英雄联盟智能游戏伙伴&#xff0c;让每一局游戏都更从容 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟的BP阶段犹豫不决&#xff0c;错过了最佳选择&#xff1…...