我必须从服务器发出获取请求,它会提供大量信息。从我发现的搜索结果来看,我似乎只能使用模型类来做到这一点。问题是为了涵盖服务器发送给我的所有响应,我必须创建 53 个模型类来存储信息。
我想知道是否有更简单的方法,比如将信息存储在 JSON 或其他东西中。
我正在使用 Retrofit 和 OKHttp。
getTimeSessionsCall.enqueue(new Callback<JSONObject>() {
@Override
public void onResponse(Call<JSONObject> call, Response<JSONObject> response) {
Log.i("getTimeSessions",Integer.toString(response.code()));
}
@Override
public void onFailure(Call<JSONObject> call, Throwable t) {
}
});
我试过这种调用,但它什么也没有存储。代码为 200,但 JSON 仍为空。
提前致谢!
最佳答案
JSONObject 为 null 的原因是 Retrofit 不知道如何解析您的响应。您可以做的是将响应作为字符串获取,然后从中构造一个 JsonObject。为此,您需要使用 ScalarConvertorsFactory
并且您的方法看起来像
getTimeSessionsCall.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
// Get the string and convert to JSONObject
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
不要忘记添加
编译 'com.squareup.retrofit2:converter-scalars:2.1.0'
并在使用 addConvertorFactory(ScalarsConvertorFactory.create())< 构建 Retrofit 实例时添加转换器工厂
关于java - 使用 JSONObject 调用改造。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570190/