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

由希尔特注入:

@Module
@InstallIn(SingletonComponent::class)
internal object NetworkModule {

    @Provides
    @Singleton
    fun provideRetrofit(): Retrofit =
        Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(
                OkHttpClient.Builder()
                    .cookieJar(SessionCookieJar())
                    .addInterceptor { chain ->
                        chain.request().also { request ->
                            val buffer = Buffer().also { request.body()?.writeTo(it) }
                            Log.d(TAG, "Intercepted request:")
                            Log.d(TAG, request.headers().toString())
                            Log.d(TAG, buffer.readUtf8())
                        }.let(chain::proceed)
                    }
                    .build()
            )
            .addConverterFactory(JsoupConverterFactory())
            .build()

    @Provides
    @Singleton
    fun provideApiService(retrofit: Retrofit): ApiService =
        retrofit.create(ApiService::class.java)
}

下面是被调用的方法:

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

日志(log)完美地显示了正文中的所有形式参数,但没有标题.我试了.toMultimap()次,但头球打出了{}次. 即使Retrofit不会自动生成任何标题,我也不认为,至少必须有@FormUrlEncoded生成的标题,或者没有?

推荐答案

我通常都是用Logging Interceptor.它有标高标题,这可以帮助你

Android相关问答推荐

无法在Jetpack Compose中显示Admob原生广告

Android,从C++调用的铁 rust 库缺少符号

strings.xml中字符串数组中的占位符

在Jetpack Compose中从LazyColumn中删除项目时发生IndexOutOf边界异常

安卓Azure通讯聊天UI库导入?

未解析的引用:视图模型

是否可以在 Android 应用程序的 Wifi 设置中为 DNS 服务器设置自定义 IP?

Android - 如何使 TextInputEditText 的高度恰好为 2 行?

为什么@PrimaryKey val id: Int? = null 在创建 Room 实体时有效吗?

使用 Kotlin 在 Android 中导航时如何防止 ViewModel 被杀死?

在模块 jetified-kotlin-stdlib-1.8.10 中发现重复的类 kotlin.random.jdk8,带有启动基准

如何在 Jetpack Compose 中创建无限pager

Android 设备断开连接后发送的 BLE 蓝牙数据

如何在 React Native 下载文件之前打开文件管理器并 Select 一个目录

在 Kotlin 中设置 startActivity() 时类型不匹配

LazyColumn 项目,隐式接收器无法在此上下文中调用单元

Jetpack Compose TextField 在输入新字符时不更新

无法使用 Gradle 托管设备对基线配置文件运行测试

Jetpack Compose:对角拆分卡片并将内容放入其中

如何在 kotlin 的 android room DB 中设置一对多关系