如何在Java中访问HTTP响应对象的值

时间:2018-12-23 11:14:33

标签: java json http httpresponse

我正在向服务器发送请求,并获得对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 =新的JSONObject(response.toString());

出现以下错误

W / System.err:org.json.JSONException:类型java.lang.String的值响应无法转换为JSONObject

1 个答案:

答案 0 :(得分:0)

您可以指定CallResponse类型。例如Call<List<IdNameType>>,其中IdNameType是代表您的JSON对象的bean。

以下草案:

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();
        }
    }
}

否则,您可以手动管理响应内容,并使用Response::raw获取原始的OkHttp响应。