Как переопределить класс JsonObjectRequest в Kotiln Volley? - PullRequest
0 голосов
/ 12 февраля 2020

Я пишу Kotlin приложение, которое имеет класс. Мне нужен этот класс для расширения JsonObjectRequest, поскольку мне нужно переопределить функцию

override fun parseNetworkResponse(response: NetworkResponse?): Response<T>

Это потому, что мне нужно интерпретировать в Kotlin код ответа HTTP, отправляемый сервером.

Однако я признаю, что был новичком в Kotlin и не смог выяснить, как расширить класс JsonObjectRequest. Я продолжаю сталкиваться с глупыми проблемами компилятора.

Может ли кто-нибудь привести пример этого?

1 Ответ

0 голосов
/ 17 февраля 2020

После небольшой итерации мне наконец удалось это выяснить. Размещать его здесь, так как это может быть полезно для других -

class DataRequest(
    method: Int,
    uri: String,
    jsonObject: JSONObject,
    listener: Response.Listener<JSONObject>,
    errorListener: Response.ErrorListener
) :
    JsonObjectRequest(method, uri, jsonObject, listener, errorListener)
{
    override fun parseNetworkResponse(response: NetworkResponse): Response<JSONObject>
    {
        try
        {
            val jsonString = String(
                response.data,
                Charset.forName(HttpHeaderParser.parseCharset(response.headers))
            )
            return Response.success(
                JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response)
            )
        } catch (e: UnsupportedEncodingException)
        {
            return Response.error(ParseError(e))
        } catch (je: JSONException)
        {
            return Response.error(ParseError(je))
        }

    }
}
...