android: retrofit2 post 报错但成功?

android: retrofit2 post giving error but successful?

我正在尝试使用 post 将项目从我的应用程序发送到我的数据库。 post 没有 return 任何东西,它在网络服务中是无效的。

我的服务接口函数

@POST("SaveDailyScan")
suspend fun save(@Body itemModel: ItemModel) : Call<ResponseBody>

我试过只调用 void 但它实际上并没有进入数据库,所以我切换到 ResponseBody。

调用它的代码。

    CoroutineScope(Dispatchers.Default).launch {
        val call = service.saveDailyScan(itemModel)
    }

我收到的错误是

E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-2
Process: com.r.test, PID: 7307
java.io.EOFException: End of input at line 1 column 1 path $
    at com.google.gson.stream.JsonReader.nextNonWhitespace(JsonReader.java:1401)
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:549)
    at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:207)
    at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:39)
    at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27)
    at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:225)
    at retrofit2.OkHttpCall.onResponse(OkHttpCall.java:121)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:206)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)

不太确定它有什么问题。它确实在崩溃之前将其插入到我的数据库中。

对于挂起函数,您不必(需要)使用 Call<...> 类型。 所以 ResponseBody 就足够了,就像这样。

@POST("SaveDailyScan")
suspend fun save(@Body itemModel: ItemModel): ResponseBody