Как получить доступ к значениям объекта HTTP Response в Java - PullRequest
0 голосов
/ 23 декабря 2018

Я отправляю запрос на сервер и получаю ответ на объект Response.Он выводит объект Json в почтальоне.Мне нужно знать способ доступа к значениям в нем.Вот мой код.

public void onResponse(Call call, Response response) throws IOException {
    if (!response.isSuccessful()) {
        throw new IOException("Unexpected code " + response);
    }

    if(response.code() == 200) {
        //need to access the response object
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

Вот вывод для почтальона для того же запроса

[
    {
        "id": 1,
        "name": "a"
    },
    {
        "id": 2,
        "name": "Udana"
    },
]

Когда я пытаюсь это сделать таким образом, JSONObject jsonObject = new JSONObject (response.toString ());

выдает следующую ошибку

W / System.err: org.json.JSONException: значение Ответ типа java.lang.String невозможно преобразовать в JSONObject

1 Ответ

0 голосов
/ 23 декабря 2018

Вы можете указать Call и Response тип.Например, Call<List<IdNameType>>, где IdNameType - это bean-компонент, представляющий ваши объекты JSON.

Черновик ниже:

public void onResponse(Call<List<IdNameType>> call, Response<List<IdNameType>> response) throws IOException {
    if (!response.isSuccessful()) {
        throw new IOException("Unexpected code " + response);
    }

    if(response.code() == 200) {
            List<IdNameType> responseContent = response.body();
            // Use response
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

В противном случае вы можете вручную управлять содержимым ответа, получаянеобработанный ответ OkHttp с Response::raw.

...