我想看到Retrofit生成的头文件,所以我添加了一个拦截器:
由Hilt注入:
@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>
型
日志完美地显示了主体中的所有表单参数,但没有标题。我尝试了.toMultimap()
,但标题为{}
。即使Retrofit不会自动生成任何标题,我不认为,至少必须有一个由@FormUrlEncoded
生成的标题,或者没有?
1条答案
按热度按时间zf9nrax11#
我通常总是使用Logging Interceptor。它有水平标题,这可以帮助你