使用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 小型企业版商用办公软件的评测文章。在这篇评测中,我将从实用性、使用场景、优点和缺点等多个方面对该软件进行客观分析,在专业角度为您揭示它的真正实力和潜力。 一、实用性…...
Monkey测试
一:测试环境搭建 1:下载android-sdk_r24.4.1-windows 2:下载Java 3:配置环境变量:关于怎么配置环境变量(百度一下:monkey环境搭建,) 二:monkey测试࿱…...
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. 函数声明数组参数 下面两个函数原型是一样的: int strlen( char *string ); int strlen( char string[] );可以使用任何一种声明,但哪个“更…...
双强联袂,数智共舞 | 中聚信 × 金蝶启联巅峰对话,共探财税未来新航道
3 月 26 日,由金蝶软件(中国)有限公司、贵州启联科技有限公司联合主办,中聚信财税技术研究中心协办的「AI 时代 先进管理用金蝶」主题峰会,在贵阳国际生态会议中心圆满落幕。这场聚焦制造企业数字化转型与 AI 赋能管理…...
设计师连夜删稿的真相:Onion Skin未启用导致版本错位!3分钟紧急修复+历史帧自动锚定脚本
更多请点击: https://intelliparadigm.com 第一章:设计师连夜删稿的真相:Onion Skin未启用导致版本错位!3分钟紧急修复历史帧自动锚定脚本 当动画师在 Toon Boom Harmony 或 Adobe Animate 中反复导出“看似正确”的中间帧&#…...
STM32CUBEMX实战指南:串口DMA高效收发与自定义打印函数优化
1. 串口DMA基础与STM32CubeMX配置 第一次用STM32CubeMX配置串口DMA时,我对着密密麻麻的选项差点崩溃。后来发现只要掌握几个关键点,5分钟就能搞定稳定可靠的DMA通信。先解释下为什么需要DMA:当你用传统方式通过串口发送"Hello World&quo…...
从Distributed到Lumped:三种SPEF寄生模型,你的芯片时序分析该选哪一个?
芯片时序分析中的SPEF模型选择:精度与效率的终极权衡 在28nm以下工艺节点,互连线寄生效应导致的时序偏差可能占到整体时钟周期的30%以上。面对动辄数千万个net的现代SoC设计,工程师们不得不在模型精度与运行时间之间做出艰难抉择。就像一位资…...
终极指南:如何解决FanControl风扇突然“隐身“问题 - 快速恢复硬件识别的完整教程
终极指南:如何解决FanControl风扇突然"隐身"问题 - 快速恢复硬件识别的完整教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: http…...
2026 流量卡办理全攻略:从下单、激活到售后,新手一遍看懂不踩坑
现在人人都离不开手机流量,不管是日常刷视频、追剧观影,还是备用机上网冲浪,一张划算又正规的通用流量卡,已经成为大众刚需。但很多新手第一次在线办理优惠号卡,普遍一头雾水:分不清流量卡是否正规靠谱、办…...
XMly-Downloader-Qt5:跨平台喜马拉雅音频下载解决方案的技术重构与实现深度解析
XMly-Downloader-Qt5:跨平台喜马拉雅音频下载解决方案的技术重构与实现深度解析 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-…...
保姆级教程:在银河麒麟Normal模式下,用kysec_set给第三方软件‘开绿灯’
银河麒麟系统下第三方软件安全授权全流程指南 在国产操作系统逐步普及的今天,银河麒麟作为主流选择之一,其安全机制设计严谨但有时也会给日常运维带来挑战。最近连续三个项目部署中,我都遇到了相同的问题——开发团队提供的工具包在测试环境运…...
基于树莓派与ChatGPT打造私有智能音箱:从硬件选型到AI集成全攻略
1. 项目概述:打造一个会思考的智能音箱 如果你和我一样,对智能家居充满热情,但又对市面上那些“大厂”智能音箱的隐私策略和有限的对话能力感到不满,那么这个项目可能就是为你量身定做的。今天要聊的,是一个完全由自己…...
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟的BP阶段犹豫不决,错过了最佳选择࿱…...
