如何在 Kotlin Android 中读取 Apollo Client 响应/GraphQL 响应的响应数据

Posted

技术标签:

【中文标题】如何在 Kotlin Android 中读取 Apollo Client 响应/GraphQL 响应的响应数据【英文标题】:How to read the response data of Apollo Client response/ GraphQL response in Kotlin Andorid 【发布时间】:2020-01-18 19:51:05 【问题描述】:

我正在使用 Kotlin 开发一个 android 应用程序。在我的应用程序中,我使用 Apollo Client 使用 GraphQL API。我现在要做的是我想检索响应的响应字段。

这是我的代码

protected fun _handleLoginButtonClick(view: View) 
        val apolloClient = ApolloClient.builder()
            .serverUrl("https://app.herokuapp.com/graphql")
            .okHttpClient(OkHttpClient())
            .build()
        val loginMutation = LoginMutation.builder()
            .identity(view.etf_email.text.toString())
            .password(view.etf_password.text.toString())
            .build()

        view.tv_login_error_message.text = "Started making request"
        apolloClient.mutate(loginMutation).enqueue(object: ApolloCall.Callback<LoginMutation.Data>() 
            override fun onFailure(e: ApolloException) 
                view.tv_login_error_message.text = e.message

            

            override fun onResponse(response: Response<LoginMutation.Data>) 
                //here I dont know how to retrieve a field, accessToken
            
        )
    

正如您在 onResponse 回调中看到的注释,我不知道如何检索 accessToken 字段。如何找回?

【问题讨论】:

您使用的是 Android Studio 吗?一旦您在response 之后键入句点,您应该有代码完成功能,它将建议可用的属性和方法。因为data 始终可以为空,所以您可能必须使用安全调用运算符(即键入?. 而不仅仅是.)来查看填充的选项。您也可以自己查看生成的LoginMutation.Data 类。 【参考方案1】:

OnResponse 包含响应对象,它具有数据对象,您可以从中获取字段。

apolloClient.mutate(loginMutation).enqueue(object: ApolloCall.Callback() 覆盖有趣的onFailure(e:ApolloException) view.tv_login_error_message.text = e.message

        

        override fun onResponse(response: Response<LoginMutation.Data>) 
            //here you can use response to get your model data like accessToken
           response.data.(here you can get data from your model. eg accessToken)
        
    )

【讨论】:

以上是关于如何在 Kotlin Android 中读取 Apollo Client 响应/GraphQL 响应的响应数据的主要内容,如果未能解决你的问题,请参考以下文章

Android socket编程

如何在 KMM(kotlin 本机)共享模块中读取 Swift 框架库中生成的对象数组

Android 11 + Kotlin:读取 .zip 文件

从Kotlin构造函数android中的Parcelable读取List列表

如何将偏移量应用于 android (Kotlin) 中的 Contacts Provider 查询?

Android kotlin:无法读取类文件