我目前正在使用数据类来构建改造 POST api 调用的请求主体。 主体本质上包含字符串。但是,我在发送字符串时注意到一个问题。 Retrofit 就是修改一些特性。基本上我的字符串是
Hgjdwwk=
但是logcat显示改造发送Hgjdwwk\u003d
。它将我的字符转换为 unicode 格式。我需要保持原样。
下面是数据类:
data class RetrofitRequestBody(
@field:com.google.gson.annotations.SerializedName("item")
val item: RetrofitBodyItem?
)
data class RetrofitBodyItem(
@field:com.google.gson.annotations.SerializedName("id") val id: String?,
@field:com.google.gson.annotations.SerializedName("key") val key: String?,
)
API 调用如下所示:
fun postCheckItem(
data: DataItem) {
...
val response = api.postCheckItem(
RetrofitRequestBody(
item = RetrofitBodyItem(
id = data.challenge,
key = data.publicKey,
)
)
)
....
相关的服务看起来像:
@POST("v1/check-item")
suspend fun postCheckItem(
@Body request: RetrofitRequestBody,
): Response
另外,因为我正在使用
Dagger-Hilt
,所以我必须声明用于数据注入的组件如下:
@InstallIn(SingletonComponent::class)
@Module
class APIModule {
...
@Singleton
@Provides
@Named("default")
fun provideDefaultOkHttpClient() = if (BuildConfig.DEBUG) {
val loggingInterceptor = HttpLoggingInterceptor()
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build()
} else {
OkHttpClient
.Builder()
.build()
}
@Singleton
@Provides
@Named("auth")
fun provideAuthOkHttpClient(
@Named("default") okHttpClient: OkHttpClient,
authInterceptor: AuthInterceptor
) = okHttpClient.newBuilder()
.callTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.addInterceptor(authInterceptor)
.build()
@Singleton
@Provides
fun provideRetrofit(
@Named("auth") okHttpClient: OkHttpClient
): Retrofit {
val gson = GsonBuilder().disableHtmlEscaping().create()
return Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(BuildConfig.BASE_URL + BuildConfig.ENDPOINT_VERSION)
.client(okHttpClient)
.build()
}
我在想:
val gson = GsonBuilder().disableHtmlEscaping().create()
return Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
可以解决问题,但没有用。
有什么想念的吗?? 谢谢