【发布时间】:2019-09-13 19:19:18
【问题描述】:
我正在尝试使用 post 将项目从我的应用程序发送到我的数据库。 post 不返回任何内容,它在 Web 服务中是无效的。
我的服务接口函数
@POST("SaveDailyScan")
suspend fun save(@Body itemModel: ItemModel) : Call<ResponseBody>
我只使用 Call 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$1.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)
不太确定它有什么问题。它确实在崩溃之前将其插入到我的数据库中。
【问题讨论】:
-
这是
ItemModel的解析错误。这个类是什么样的,你是如何创建它的? -
刚才怎么了,
@POST("SaveDailyScan") suspend fun save(@Body itemModel: ItemModel): ResponseBody -
@DominicFischer 显然什么都没有,我是 retrofit2 的新手,所以我找到的所有东西似乎都需要调用
-
那是答案吗?我应该做一个正确的答案让你接受吗?
-
@DominicFischer 你可以解决我的问题。
标签: android kotlin retrofit2 kotlin-coroutines