Gson解析器在特定情况下不与Anko的doAsync一起使用

时间:2018-09-20 04:57:38

标签: android kotlin gson facebook-android-sdk anko

我正在为Android开发SDK,但遇到一些问题...

我从请求的主体中获取json并尝试将其解析为User模型,但它不起作用,所有属性均保持为null,但是当我在没有这些async和uiThread的情况下执行解析器即可。但是当我正在执行请求时,我无法在主线程上完成它...

我的Android API是23,我的朋友在API 27上测试了相同的代码,并且可以正常工作,我不知道我们的设备之间是否还有更多区别。

预先感谢

 @JvmStatic
    fun loginWithFacebook(token: String, listener: RequestListener<User>) {

        doAsync {
            val gson = GsonBuilder().create()

            uiThread { listener.onStart() }

            val response = post(body = "$INSTANCE_URL/auth", "{\n" +
                    "\"provider\": \"facebook\",\n" +
                    "\"access_token\": \"" + token + "\"" +
                    "}\n")

            uiThread {
                response?.let { res ->
                    try {

                        System.out.println("BCFLW-SDK \n Response : $res")

                        val user = gson.fromJson(res, User::class.java)

                        System.out.println("BCFLW-SDK Parsed User : $user")
                        listener.onCompleted(result = user)
                    } catch (e: Exception) {
                        System.out.println("BCFLW-SDK Error Exception : ${e.message}")
                        listener.onError(RequestError.PARSE)
                    }

                    return@uiThread
                }

                listener.onError(RequestError.DEFAULT)
            }

        }

    }

0 个答案:

没有答案