1
FuelとResultを使用してJSONオブジェクトでレスポンスボディを取得したいとします。 これは私のコールバックコードです:燃料と結果を使用してバイト配列をJsonにキャスト
private fun LoginCallback(result: Result<Any, Exception>?)
{
mAuthTask = null
showProgress(false)
val (data, error) = result ?: return (Toast.makeText(applicationContext,
R.string.error_wrong, Toast.LENGTH_SHORT).show())
result.success {
val dataJson = data as Json
val user: SharedPreferences = getSharedPreferences(SAVED_USER_INFOS, 0)
val editor = user.edit()
editor.putString(SAVED_ACCESS_TOKEN, dataJson.obj().getString(SAVED_ACCESS_TOKEN))
editor.putString(SAVED_TOKEN_LIFETIME, dataJson.obj().getString(SAVED_TOKEN_LIFETIME))
editor.apply()
finish()
startActivity<MainActivity>()
}
result.failure {
showProgress(false)
mPasswordView!!.error = getString(R.string.error_incorrect_password)
mPasswordView!!.requestFocus()
}
}
しかし、私はJSONに(バイト配列)私のデータをキャストしようとすると、私はこのエラーがあります:
java.lang.ClassCastException: byte[] cannot be cast to com.github.kittinunf.fuel.android.core.Json
これから来ることができる任意のアイデアを?別のAPIルートに変更する前にコードが動作していました。
JSON文字列がデータに格納されていることを確認しました。
APIの応答が有効であるようです。
Response : OK
Length : 220
Body : {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OWVlZDU4NzIxMjcwMzc2MDUwZmY2MjAiLCJpYXQiOjE1MDkxNzcds0MjgsImV4cCI6MTU5NTU3NzQyOH0.VwAkLeKW2SL3bMDhQIs-0Pwx0kMg9xgzpDLxprbCUvQ","tokenExpirationDate":1509263828796}
Headers : (13)
null : [HTTP/1.1 200 OK]
Connection : [Keep-Alive]
Content-Length : [220]
Content-Type : [application/json; charset=utf-8]
Date : [Sat, 28 Oct 2017 07:57:08 GMT]
ETag : [W/"dc-SzYVR7bdKvnAvN0IajN0NVs3SIE"]
Keep-Alive : [timeout=5, max=100]
Server : [Apache/2.4.25 (Debian)]
X-Android-Received-Millis : [1509177392976]
X-Android-Response-Source : [NETWORK 200]
X-Android-Selected-Protocol : [http/1.1]
X-Android-Sent-Millis : [1509177392520]
X-Powered-By : [Express]
は間違っている可能性が何の任意のアイデア?
バイト[]はJsonのサブタイプではありません。そのため、あなたは例外を取得しています。あなたは、あなたのJsonをthosバイトで構築する必要があります(またはバイトで構築された文字列を渡す) – crgarridos
[Result](https://github.com/kittinunf/Fuel#result)を使って適切なString/Json /オブジェクトを返すことができます。 ) – crgarridos