Gson parser не работает с doAsync от Anko в определенных случаях - PullRequest
0 голосов
/ 20 сентября 2018

Я делаю SDK для Android, но у меня возникают некоторые проблемы ...

Я получаю json из тела запроса и пытаюсь разобрать его в пользовательской модели, но он не работаетвсе свойства остаются нулевыми, но когда я делаю это без этих асинхронных и 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)
            }

        }

    }
...