【发布时间】:2021-05-13 09:40:38
【问题描述】:
行EarthlingsApi.retrofitService.register(params)
在我下面的代码中
fun clickLogin(){
val params = HashMap<String, String>()
params["email"] = email
params["idToken"] = idToken
viewModelScope.launch {
try {
val userRegisterResult = EarthlingsApi.retrofitService.register(params)
} catch (e: Exception) {
Timber.d("exception? " + e.toString())
_response.value = "Failure: ${e.message}"
}
}
}
总是会返回错误exception? java.lang.IllegalArgumentException: Unable to create @Body converter for java.util.HashMap<java.lang.String, java.lang.String> (parameter #1) for method ApiService.register
下面是EarthlingsApi的代码
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
.baseUrl(BASE_URL)
.build()
interface ApiService {
@POST("/user/register")
suspend fun register(@Body params: HashMap<String, String>?): UserRegister?
}
object EarthlingsApi {
val retrofitService : ApiService by lazy {retrofit.create(ApiService::class.java) }
}
以前我使用 Gson 并且从未遇到过此错误。在使用 Moshi 时我还有什么需要做的吗?
【问题讨论】:
标签: android retrofit kotlin-coroutines moshi