首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin中使用协程和改进从代码为400的服务器响应中获取正文?

如何在Kotlin中使用协程和改进从代码为400的服务器响应中获取正文?
EN

Stack Overflow用户
提问于 2021-01-12 22:40:49
回答 1查看 317关注 0票数 0

我有一个xampp服务器连接到我的android应用程序。当我执行api调用时,它将返回响应代码200或响应代码400。如果响应码是200,我就能得到响应体。

下面是响应正文:

代码语言:javascript
复制
{"message": "User was created."}

但是,当代码为400时,我无法获得响应体。

它是空的。

这是我的界面:

代码语言:javascript
复制
@POST("api/user/createUser.php")
suspend fun register(@Body details : JsonObject) : Response<JsonElement>

我是这么称呼它的:

代码语言:javascript
复制
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:

代码语言:javascript
复制
E/Message: {"message":"User was created."}

响应代码400:

代码语言:javascript
复制
E/Message: null

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

EN

回答 1

Stack Overflow用户

发布于 2021-01-12 22:53:59

如果我没记错的话,retrofit会将200-399范围之外的响应代码作为错误处理,所以消息应该是使用response.errorBody()而不是response.body()来获得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65686131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档