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拦截器中查看。

相关推荐
COSMOS_*1 天前
2025最新版 Android Studio安装及组件配置(SDK、JDK、Gradle)
android·ide·jdk·gitee·android studio
jian110581 天前
android studio Profiler性能优化,查看内存泄漏
android·性能优化·android studio
建群新人小猿1 天前
陀螺匠企业助手——组织框架图
android·java·大数据·开发语言·容器
TheNextByte11 天前
如何将文件从Android无线传输到 iPad
android·ios·ipad
赫萝的红苹果1 天前
实验探究并验证MySQL innoDB中的各种锁机制及作用范围
android·数据库·mysql
叶落无痕521 天前
Android Studio 2024.3.1 连接夜神模拟器
android·ide·android studio
玲子的猫1 天前
安卓原生开发实现图片双指放大预览功能
android
2501_915106321 天前
如何在iPad上高效管理本地文件的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad
似霰1 天前
AIDL Hal 开发笔记5----实现AIDL HAL
android·framework·hal
2501_915106321 天前
iOS 成品包加固,在只有 IPA 的情况下,能做那些操作
android·ios·小程序·https·uni-app·iphone·webview