当前位置: 首页 > 知识库问答 >
问题:

如何通过协同路由和改造从Kotlin中代码为400的服务器响应中获取正文?

弘和同
2023-03-14

我有一个xampp服务器连接到我的android应用程序。当我执行api调用时,它会返回响应代码200或响应代码400。如果响应代码为200,我就能够获取响应正文。

以下是响应主体:

{"message": "User was created."}

然而,当代码为400时,我无法获得响应主体。

它为空。

这是我的界面:

@POST("api/user/createUser.php")
suspend fun register(@Body details : JsonObject) : Response<JsonElement>

我是这样称呼它的:

val service = Server.ApiClient.createService(ServerInterface::class.java)
        
        CoroutineScope(Dispatchers.IO).launch {

            try {
                val response = service.register(details)
                Log.wtf("Message",response.body().toString())
            }
            catch (e : Exception){
                Log.wtf("Error",e.message)
            }
        }

以下是日志

响应代码200:

E/Message: {"message":"User was created."}

响应代码400:

E/Message: null

有人知道怎么解决这个问题吗?

共有1个答案

宗政子辰
2023-03-14

如果我没记错的话,改装将200-399范围之外的响应代码作为错误处理,因此应该可以使用响应来获取消息。errorBody()而不是响应。body()。

 类似资料:
  • 我想用retforIt从服务器得到响应。下面是一些代码: 怎么了?我在哪里可以找到改装文档?是什么?请帮忙

  • 我使用改造2.7.1与静态编程语言协程。 我的改装服务定义如下: 此调用返回HTTP 204无内容响应,这会导致改装时崩溃: 如何使用协程处理改造中的204响应而不崩溃?

  • 问题内容: 我正在尝试从URL获取InputStream。可以从Firefox打开URL。它返回一个json,并且我已经安装了一个插件以在Firefox中查看json,因此我可以在其中查看它。 所以我尝试通过以下方式从Java获取它: 但是它在urlConnection.getInputStream()中抛出IOException。 我也尝试过: 但是没有运气。 任何信息都是可观的。提前致谢。 问

  • 我得到这个错误: java。木卫一。IOException:服务器为URL返回了HTTP响应代码400:https://graph.facebook.com/search?q=java 对于这个代码: 我不明白为什么?

  • 如何从改造和存储到java类并访问某个地方来读取此响应??

  • 如何获得原始json输出。如果可能的话,我不想实现用户数据类和解析器。有什么办法吗? 标记重复的帖子(获得原始HTTP响应与改造)不是为Kotlin和我需要Kotlin版本。