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

okhttp关于header修改

在项目开发中,需要和后台定义一些规则,比如一些请求头信息,Content-Type,User-Agent。不能使用默认的,那么就得我们自己配置全局的。
基于okhttp4.0以上版本修改步骤:
创建我们自己的MediaType, create已经被废弃

val mediaType= "application/xxxxx-xxxxx".toMediaTypeOrNull()

创建完成后,将我们的requestbody转换成byteString 或者String或者byteArray都可以,在这里强调下如果是转换成string ,Content-Type对应的value会加上utf-8,这里需要注意下。

//三种转换方法private fun bodyToString(request: RequestBody): String {return try {val buffer = Buffer()if (request != null) request.writeTo(buffer) else return ""buffer.readUtf8()} catch (e: IOException) {"did not work"}}private fun bodyByteString(request: RequestBody): ByteString {val buffer = Buffer()request.writeTo(buffer)return buffer.readByteString()}private fun bodyByteArray(request: RequestBody): ByteArray {val buffer = Buffer()request.writeTo(buffer)val readUtf8 = buffer.readUtf8()return readUtf8.toByteArray()}

接下来就简单了

// 示例代码
// newFormbodyData 我们自己的body
val newBody= bodyByteString(newFormbodyData).toRequestBody(mediaType)
最后一步就是将得到的请求体放入到我们的request中post方法中

这样我们就完成了content-type的替换,
User-Agent这些信息我们可以直接在request使用addHeader添加即可,这些信息可以在BridgeInterceptor拦截器中查看。

http://www.lryc.cn/news/225867.html

相关文章:

  • pytorch代码实现注意力机制之Flatten Attention
  • 激光雷达和人工智能
  • 【算法练习Day44】最长递增子序列最长连续递增序列最长重复子数组
  • STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录
  • 21. 合并两个有序链表 --力扣 --JAVA
  • Linux 基本语句_10_进程
  • 矩阵起源加入 OpenCloudOS 操作系统开源社区,完成技术兼容互认证
  • 3D物理模拟和视觉特效软件SideFX Houdini mac中文介绍
  • GPT-4.0网页平台-ChatYY
  • mysql,redis导入导出数据库数据
  • conda修改虚拟环境名称
  • c语言,将奇数和偶数分类
  • 前端设计模式之【观察者模式】
  • HTTPS安全相关-通信安全的四个特性-ssl/tls
  • 并查集:Leetcode765 情侣牵手
  • 如何设计一个网盘系统的架构
  • 【代码随想录】算法训练计划17
  • “护肤品销售策略:从“免费拼团”到“3人回本大放送”“
  • uniapp和vue3+ts开发小程序,使用vscode提示声明变量冲突解决办法
  • CCLink转Modbus TCP网关_MODBUS报文配置
  • 【开源】基于Vue.js的大学兼职教师管理系统的设计和实现
  • Mysql数据库 14.SQL语言 视图
  • 【Acwing171】送礼物(双向dfs)题解
  • 机器学习---多分类SVM、支持向量机分类
  • 玩转Linux基本指令
  • 【开源分享】国内可用的免费安卓GPT语音助手 - 可音量键唤起,可联网
  • 什么是安全平行切面
  • Git 入门使用 —— 建库、代码上下传、常用命令
  • HTML5学习系列之简单使用1
  • 计算机网络第一章(计算机网络开篇)