【发布时间】:2019-06-03 09:38:57
【问题描述】:
我在从后端调用服务后返回值时遇到问题,它是我从服务获取的字符串,在我调用此服务后,我希望该方法返回该字符串
我尝试将它保存在一个变量中,将它保存在 sharedpreference 中,但它总是返回一个空字符串。然而,当我 Log.d 从服务中获得的结果时,我可以看到它返回了我想要的东西,但我希望方法然后返回结果
fun getExchangePortalToken(): String {
//I want this variable to be the value of the String i get from the Service and to return it afterwards
var token = ""
compositeDisposable!!.add(apiServicePortal!!.getExchangeToken(basic, "casopenid-bearer", idToken)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object: DisposableSingleObserver<Response<ResponseBody>>(){
override fun onSuccess(value: Response<ResponseBody>?) {
Log.d("EXCHANGE_PORTAL", "SUCCESS")
val string = value!!.body()!!.string()
val obj = JSONObject(string)
var access_token = obj.getString("access_token")
//Here im setting the value of the string based on the Result i get from the service
token = access_token
}
override fun onError(e: Throwable?) {
Log.d("EXCHANGE_PORTAL", e!!.message)
token = "ERROR"
}
}))
return token
}
【问题讨论】:
-
您期望 Async 调用的返回值。如果您想为其他服务调用交换令牌,您可以将该服务调用与
getExchangeToken调用链接。getExchangeToken().flatMap{ (token) -> callSomeOtherService(token) }