我正在try 请求Spotify API,首先我需要授权令牌来获取一些信息, 因此,我正在获取令牌,在此之后,我try 使用该令牌请求一些专辑,但第二个请求在第一个请求之前开始,我传递空令牌,并在获取它之后.我能做什么?
以下是我的代码:
viewModelScope.launch {
networkUiState = try {
val networkMusicRepository = NetworkMusicRepository()
getSpotifyToken(networkMusicRepository)
val listResult = networkMusicRepository.getAlbums(NetworkUiState.token)
NetworkUiState.Success
} catch (e: IOException) {
Log.d("RESPONSE", e.message.toString())
NetworkUiState.Error
} catch (e: HttpException) {
Log.d("RESPONSE", e.response()?.errorBody()?.string().toString())
NetworkUiState.Error
}
}
并获取令牌函数:
private suspend fun getSpotifyToken(networkMusicRepository:
NetworkMusicRepository) {
val responseCall = networkMusicRepository.getToken()
responseCall.enqueue(object : Callback<TokenResponse> {
override fun onResponse(
call: Call<TokenResponse>,
response: Response<TokenResponse>
) {
val responseBody = response.body()
if (responseBody != null) {
val token = responseBody.accessToken
Log.i("RESPONSE", responseBody.accessToken)
NetworkUiState.token = token
} else {
Log.i("RESPONSE", "null response body")
}
}
override fun onFailure(call: Call<TokenResponse>, t: Throwable) {
Log.e("RESPONSE", t.message.toString())
}
})
}