gpt4 book ai didi

android - 使用 Retrofit2 和 Kotlin : Unable to create call adapter 在正文中发布数据

转载 作者:行者123 更新时间:2023-12-02 12:59:05 31 4
gpt4 key购买 nike

我们在发送带有正文参数的发布请求时遇到了问题。
JSON 看起来像:

{
"userId": 123456,
"comment": "This is a comment"
}

我们使用以下接口(interface)调用后端:
interface ServiceDetailsService {

@POST(API_CLOSE_EVENT)
fun closeEvent(@Body data: servicePostData): Call<servicePostData>
}

我们调用这个函数:
fun serviceTaskDone(data: servicePostData) {
val call: Call<servicePostData> = service.closeEvent(data)
call.enqueue(object : Callback<servicePostData> {
override fun onResponse(call: Call<servicePostData>, response: Response<servicePostData>) {
Log.d("Output", response.toString())
}

override fun onFailure(call: Call<servicePostData>, t: Throwable) {
Log.d("Output", t.toString())
}

})
}

当我们现在执行我们的代码时,会出现以下错误:
11-15 18:40:23.732 23168-23168/de.conlance.shannonapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.conlance.shannonapp, PID: 23168
java.lang.IllegalArgumentException: Unable to create call adapter for retrofit2.Call<de.conlance.shannonapp.data.model.serviceDetails.Task>
for method ServiceDetailsService.closeEvent
at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:755)
at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:240)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:165)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
at java.lang.reflect.Proxy.invoke(Proxy.java:913)
at $Proxy3.closeEvent(Unknown Source)
at de.conlance.shannonapp.presentation.serviceDetails.ServiceDetailsViewModel.serviceTaskDone(ServiceDetailsViewModel.kt:37)
at de.conlance.shannonapp.presentation.serviceDetails.ServiceDetailsFragment$showAcceptErrorDescDialog$1.onClick(ServiceDetailsFragment.kt:171)
at android.view.View.performClick(View.java:6274)
at android.view.View$PerformClick.run(View.java:24859)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6710)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
Caused by: kotlin.TypeCastException: null cannot be cast to non-null type retrofit2.CallAdapter<kotlin.Any, kotlin.Any>
at de.conlance.shannonapp.rx.RetrofitRxErrorHandlingCallAdapterFactory.get(RetrofitRxErrorHandlingCallAdapterFactory.kt:41)
at retrofit2.Retrofit.nextCallAdapter(Retrofit.java:221)
at retrofit2.Retrofit.callAdapter(Retrofit.java:205)
at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:238)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:165)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
at java.lang.reflect.Proxy.invoke(Proxy.java:913)
at $Proxy3.closeEvent(Unknown Source)
at de.conlance.shannonapp.presentation.serviceDetails.ServiceDetailsViewModel.serviceTaskDone(ServiceDetailsViewModel.kt:37)
at de.conlance.shannonapp.presentation.serviceDetails.ServiceDetailsFragment$showAcceptErrorDescDialog$1.onClick(ServiceDetailsFragment.kt:171)
at android.view.View.performClick(View.java:6274)
at android.view.View$PerformClick.run(View.java:24859)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6710)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

我们已经在调用中使用 Void-Parameter 进行了测试,我们也得到了与下面相同的错误消息。

对于任何建议,我们都非常感谢。

最好的祝福

最佳答案

有一些用 @NonNull 注释的东西, 而它得到 NULL传入:

Caused by: kotlin.TypeCastException: null cannot be cast to non-null type retrofit2.CallAdapter at de.conlance.shannonapp.rx.RetrofitRxErrorHandlingCallAdapterFactory.get(RetrofitRxErrorHandlingCallAdapterFactory.kt:41)



叫它 requestapi而不是 call会使它更具可读性( call 甚至可能发生冲突)。

关于android - 使用 Retrofit2 和 Kotlin : Unable to create call adapter 在正文中发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53325358/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com