我正在向服务器发送请求,并获得对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
答案 0 :(得分:0)
您可以指定Call
和Response
类型。例如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响应。