java - 在 uiThread 中获取 Fuel 结果

标签 java android kotlin fuel

我使用名为“Fuel”的库从服务器获取数据,这是我的代码:

button1.setOnClickListener {
            val jb = "{......}"

            Fuel.post("server_url")
                    .header(Headers.CONTENT_TYPE, "application/json")
                    .body(jb)
                    .response { request, response, result ->
                        Log.d("test", request.toString())
                        Log.d("test", response.toString())
                        val (bytes, error) = result
                        if (bytes != null) {
                            val e = JsonParser().parse(String(bytes))
                            val obj = e.asJsonObject
                            val rm = obj.get("rm").asString
                        }
                    }
        }

但问题来了:我怎样才能得到“rm”的值?

它是在 Fuel 函数中定义的,我无法从 Fuel 外部获取它的值...

谁能帮我看看如何得到它?

最佳答案

可以在响应对象外声明一个var并设置值

var globalRM : String? = null;
button1.setOnClickListener {
            val jb = "{......}"
            var rm : String? = null;
            Fuel.post("server_url")
                    .header(Headers.CONTENT_TYPE, "application/json")
                    .body(jb)
                    .response { request, response, result ->
                        Log.d("test", request.toString())
                        Log.d("test", response.toString())
                        val (bytes, error) = result
                        if (bytes != null) {
                            val e = JsonParser().parse(String(bytes))
                            val obj = e.asJsonObject
                            globalRM = obj.get("rm").asString
                            rm = obj.get("rm").asString
                        }
                    }
        }

您可能还想在获取值后立即执行一些操作,在这种情况下,创建一个方法并使用它:

onCreate(...){
button1.setOnClickListener {
            val jb = "{......}"
            var rm : String? = null;
            Fuel.post("server_url")
                    .header(Headers.CONTENT_TYPE, "application/json")
                    .body(jb)
                    .response { request, response, result ->
                        Log.d("test", request.toString())
                        Log.d("test", response.toString())
                        val (bytes, error) = result
                        if (bytes != null) {
                            val e = JsonParser().parse(String(bytes))
                            val obj = e.asJsonObject
                            globalRM = obj.get("rm").asString
                            rm = obj.get("rm").asString
                            onFuelFetched(rm)
                        }
                    }
        }
}

fun onFuelFetched(val rm:String?){
    // do anything you wish to do with this value here
}

关于java - 在 uiThread 中获取 Fuel 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58387666/

相关文章:

android - 如何以编程方式访问Android中的apk生成时间?

android - 使用 OpenCV 在 Android 上使用神经网络进行灰度图像分类

android - 单击 EditText 打开 DatePickerDialog 需要两次单击

parcelable - 将 Parceler 与带有构造函数的 Kotlin 数据类一起使用以进行序列化

android - RxJava 2 - 列表对象中的过滤器列表

java - SOLR选择请求错误-Java类转换异常

Java 无法从 CLASSPATH 加载类

postgresql - Kotlin 中的 JdbcTemplate IN 子句

java - 用于内连接查询的 Hibernate 映射对象

Java 编译器/eclipse 无法识别死代码