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
我正在尝试使用 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