Okhttp攔截器沒有看到請求的Content-type標頭

我需要創建一個OkHttp interceptor,它讀取請求的Content-Type頭的值(帶有正文的POST請求)。不幸的是,當我試圖通過request.headers訪問它時,它不在那里(我可以看到其他自定義標頭,但看不到Content-Type)。然而,我可以在HttpLoggingInterceptor的日志中清楚地看到它。

我正在使用Retrofit

Sample code:

//versions:
//okHttp: 4.10.0
//retrofit: 2.9.0

interface API {
    @Headers("secret: aaa", "aaa: AAA", "bbb: BBB", "Content-Type: application/json")
    @POST("/post")
    suspend fun echoPOST(@Body bodyData: BodyData): Response<String>
}

data class BodyData(val secret: String = "aaaa", val nonsecret: String = "bbb")

val httpClient = OkHttpClient.Builder()
            .addInterceptor(
                HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
            )
            .addInterceptor(MyInterceptor())
            .build()
val testRetrofitClient = Retrofit.Builder()
            .baseUrl("https://httpbin.org")
            .addConverterFactory(ScalarsConverterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .client(httpClient)
            .build()

val api = testRetrofitClient.create(API::class.java)

suspend fun testRequestPOST() {
        try {
            val response = api.echoPOST(BodyData())
        } catch (e: Exception) {
            Timber.e(e)
        }
}

interceptor:

class MyInterceptor : Interceptor {
    override fun intercept(chain: Chain): Response {
        val request = chain.request()
        val response = chain.proceed(request)
        Log.d("HTTP", "Content-Type: ${request.header("Content-Type")}")
        Log.d("HTTP", "request headers: ${request.headers.joinToString { it.first }}")
        return response
    }
}

當調用被觸發時,Logcat顯示:

// output from HttpLoggingInterceptor
--> POST https://httpbin.org/post
Content-Type: application/json; charset=UTF-8
Content-Length: 35
secret: aaa
bbb: bbb123
ccc: ccc123
{"nonsecret":"bbb","secret":"aaaa"}

// output from MyInterceptor
Content-Type: null
request headers: secret, bbb, ccc

因此Content-Type標頭存在于請求中(由HttpLoggingInterceptor記錄),但在MyInterceptor中不可見

我做錯了什么?

? 最佳回答:

查看RequestBody,它包含這些信息。

主站蜘蛛池模板: 国偷自产av一区二区三区| 国模精品一区二区三区| 无码人妻一区二区三区av| 亚洲国产一区明星换脸| 久久精品无码一区二区三区免费 | 亚洲一区二区三区久久久久| 精品性影院一区二区三区内射| 免费无码VA一区二区三区| 亚洲一区在线视频| 国产精品va一区二区三区| 精品人妻少妇一区二区| 精品福利一区二区三| 人妻无码一区二区三区AV| 国产精品一区二区久久沈樵| 香蕉视频一区二区三区| 人妖在线精品一区二区三区| 国产午夜一区二区在线观看| 久久无码精品一区二区三区| 亚洲无圣光一区二区| 精品福利一区3d动漫| 国产一区二区三区在线2021| 韩国福利一区二区美女视频| 精品综合一区二区三区| 亚洲一区二区三区夜色| 国产成人av一区二区三区在线观看| 一区免费在线观看| 麻豆亚洲av熟女国产一区二| 国产午夜一区二区在线观看| 无码一区二区三区在线观看| 免费高清在线影片一区| 国产午夜精品一区二区三区嫩草 | 午夜一区二区在线观看| 国产av熟女一区二区三区| 亚洲熟妇AV一区二区三区浪潮| 国产一区二区精品尤物| 日韩免费无码一区二区视频| 日韩在线不卡免费视频一区| 无码人妻精品一区二区蜜桃百度| 亚洲爆乳无码一区二区三区| 天天看高清无码一区二区三区| 精品无码AV一区二区三区不卡 |