【问题标题】:android: retrofit2 post giving error but successful?android:retrofit2发布错误但成功?
【发布时间】: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


【解决方案1】:

对于挂起函数,您不需要(不需要)使用Call&lt;...&gt; 类型。 所以只需ResponseBody 就足够了,就像这样。

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

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多