android - Json 在使用 OkHttp 时收到问题

标签 android json okhttp

我正在使用 OkHttp 从 api 的 json 数据中检索数据。我写了下面的代码:

OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(forecastUrl).build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
                // TODO: manage failure
                // try again
                doInBackground(params);
            }

            @Override
            public void onResponse(Response response) throws IOException {
                if (response.isSuccessful()) {
                    String jsonData = response.body().string();
                    nowDataList.clear();
                    hourlyDataList.clear();
                    dailyDataList.clear();
                    try {
                        nowDataList.add(getNowData(jsonData));
                        for (int i = 0; i < 24; i++) {
                            hourlyDataList.add(getHourlyData(jsonData, i));
                        }
                        for (int i = 0; i < 8; i++) {
                            dailyDataList.add(getDailyData(jsonData, i));
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else {
                    // if response is not successful try again
                    doInBackground(params);
                }
            }

现在上面的代码以良好的互联网速度 (WiFi/LTE) 接收完整数据。 然而,我有时无法在较慢的互联网速度下获得完整的 json 数据(主要是在 2G/3G 上)

我也尝试了以下解决方案:Android JSON receive issue .虽然它不是基于 OkHttp,但我为我的代码修改了它,但没有利润。

请帮我找出问题并提前致谢。

最佳答案

onResponse 不会等待获得整个响应,如果您的响应非常大/或者您没有良好的互联网连接,那么这可能是个问题。

我用过这个,它很适合我。

// get the full response
response = client.newCall(request).execute();

然后继续你的代码。希望对您有所帮助。

关于android - Json 在使用 OkHttp 时收到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063486/

相关文章:

android - 如何像在 Android Market 应用程序中一样创建进度指示器?

android动态添加彼此下的布局

java - 适用于 Android 的 Fabric crashlytics

java - 在android中反序列化JSON字符串

php - 选择对 json 的多维数组进行查询

javascript - 有没有办法使用 WebView 将 JavaScript 中的对象(类实例)提取到 Android?

json - Swagger 在本地运行但不在 IIS 上运行,不解析基本路径

android okhttp post 获取 "length required"消息和 411 返回码

android - 在 Retrofit 2 中检测到 'no internet' 连接错误

java - 异步加载 JButton 图标