android 请求标头为空/无法通过拦截器获取

au9on6nz  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(158)

我想看到Retrofit生成的头文件,所以我添加了一个拦截器:
由Hilt注入:

  1. @Module
  2. @InstallIn(SingletonComponent::class)
  3. internal object NetworkModule {
  4. @Provides
  5. @Singleton
  6. fun provideRetrofit(): Retrofit =
  7. Retrofit.Builder()
  8. .baseUrl(BASE_URL)
  9. .client(
  10. OkHttpClient.Builder()
  11. .cookieJar(SessionCookieJar())
  12. .addInterceptor { chain ->
  13. chain.request().also { request ->
  14. val buffer = Buffer().also { request.body()?.writeTo(it) }
  15. Log.d(TAG, "Intercepted request:")
  16. Log.d(TAG, request.headers().toString())
  17. Log.d(TAG, buffer.readUtf8())
  18. }.let(chain::proceed)
  19. }
  20. .build()
  21. )
  22. .addConverterFactory(JsoupConverterFactory())
  23. .build()
  24. @Provides
  25. @Singleton
  26. fun provideApiService(retrofit: Retrofit): ApiService =
  27. retrofit.create(ApiService::class.java)
  28. }

字符串
下面是调用的方法:

  1. @FormUrlEncoded
  2. @POST("/alswww2.dll/{sessionObject}")
  3. suspend fun login(
  4. @Path("sessionObject") sessionObject: String,
  5. @FieldMap formInputs: Map<String, String>,
  6. ): Response<ResponseBody>


日志完美地显示了主体中的所有表单参数,但没有标题。我尝试了.toMultimap(),但标题为{}。即使Retrofit不会自动生成任何标题,我不认为,至少必须有一个由@FormUrlEncoded生成的标题,或者没有?

zf9nrax1

zf9nrax11#

我通常总是使用Logging Interceptor。它有水平标题,这可以帮助你

相关问题