无法在 Retrofit 2.0 android 中获取 json 字符串作为响应
Unable to get json string as response in Retrofit 2.0 android
这不是一个重复的问题。
我正在使用 Retrofit 2.0 和 json 进行网络任务。
此外,我没有使用 GSON 来解析 json,而是使用简单的 JsonObject 和 JsonArray 从 json 字符串中获取模型对象。
首先指导我在上述情况下必须使用哪种改造转换器。
其次,我无法获得 json 字符串作为响应字符串。
我尝试了两种方法 -
方法 1 - 我使用了 Call< Void >。在这种情况下,response.body() returns null 虽然状态代码是 200.
方法 2 - 我使用了 Call< ResponseBody >。在这种情况下 call.enqueue 方法调用 'on failure method' 而不是 'onSuccess' 并且响应正文也为空。
在这种情况下,状态代码也是 200。
请建议如何获取 json 字符串作为改造 2.0 的响应。
您需要使用 JsonObject
而不是 Void
或 ResponseBody
。您的代码应该是
Call<JsonObject> getCall = request.getDataCall();
getCall.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
}
});
注意:确保您使用的是com.google.gson.JsonObject
这不是一个重复的问题。 我正在使用 Retrofit 2.0 和 json 进行网络任务。 此外,我没有使用 GSON 来解析 json,而是使用简单的 JsonObject 和 JsonArray 从 json 字符串中获取模型对象。 首先指导我在上述情况下必须使用哪种改造转换器。
其次,我无法获得 json 字符串作为响应字符串。
我尝试了两种方法 - 方法 1 - 我使用了 Call< Void >。在这种情况下,response.body() returns null 虽然状态代码是 200.
方法 2 - 我使用了 Call< ResponseBody >。在这种情况下 call.enqueue 方法调用 'on failure method' 而不是 'onSuccess' 并且响应正文也为空。 在这种情况下,状态代码也是 200。
请建议如何获取 json 字符串作为改造 2.0 的响应。
您需要使用 JsonObject
而不是 Void
或 ResponseBody
。您的代码应该是
Call<JsonObject> getCall = request.getDataCall();
getCall.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
}
});
注意:确保您使用的是com.google.gson.JsonObject