java - 使用 JSONObject 调用改造。

标签 java android retrofit2 okhttp

我必须从服务器发出获取请求,它会提供大量信息。从我发现的搜索结果来看,我似乎只能使用模型类来做到这一点。问题是为了涵盖服务器发送给我的所有响应,我必须创建 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/

相关文章:

java - JpaRepository findAll() 返回空结果

java - 使用 Retrofit2 和多个内联项的简单 XML 序列化

php - 使用Retrofit、PHP、JSON和WAMP从Android应用程序获取Mysql数据库的信息

android - 如何发布带有第三方依赖的android SDK?

android - java.lang.NoClassDefFoundError : Failed resolution of: Lcom/google/android/gms/auth/api/signin/internal/zzz; 错误

android - 如何从 Retrofit2 调用 OnResponse 返回 Java 对象

java - 将字符串序列转换为 URI 的有效方法

java - 是否有用于 Linux 的 SOAPUI 的命令行替代方案,用于将 SOAP 发送到 HTTPS 服务?

java - Spinner onItemSelectedListener 不起作用?

android - 在 TextView 上动画删除线