Я использую Vk Api, и в течение 1 сценария я получаю объект ответа с кодом 200, но текст сообщения об ошибке - JSON.
Я хочу спросить вас - возможно ли каким-то образом получить объект ошибки из ответа и посмотреть на error_code
, который был возвращен из Vk Api.
Я использую Retrofit 2
на Android и GsonConverterFactory
.
Я пытаюсь сделать что-то вроде этого:
class NetworkCheckerInterceptor(val networkChecker: NetworkChecker) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val requestBuilder = chain.request().newBuilder()
if (!networkChecker.isConnected()) {
throw NoNetworkConnectionException("No network connection.")
}
try {
val response = chain.proceed(requestBuilder.build())
val error = Gson().fromJson(response.body()?.string(), Error::class.java)
return response
} catch (e: SocketTimeoutException) {
throw SocketTimeoutException()
} catch (e: UnknownHostException) {
throw UnknownHostException()
}
}
}
Но я получаю сообщение об ошибке при попытке получить объект «Ошибка».
Пример ошибки Json:
{
"error": {
"error_code": 7,
"error_msg": "Permission to perform this action is denied",
"request_params": [
{
"key": "oauth",
"value": "1"
},
{
"key": "method",
"value": "stats.get"
},
{
"key": "timestamp_to",
"value": "1542549195"
},
{
"key": "month",
"value": "month"
},
{
"key": "group_id",
"value": "56461699"
},
{
"key": "v",
"value": "5.87"
},
{
"key": "interval",
"value": "month"
},
{
"key": "stats_groups",
"value": "visitors"
},
{
"key": "timestamp_from",
"value": "1514757660"
}
]
}
}
Единственное, что меня волнует, это "error_code": 7
, это проблема разрешения.
Итак, как я могу получить этот объект, даже если мой код ответа 200?