OkHttp库使用如何完整的获取json数据

发布于 2022-09-04 12:31:06 字数 1706 浏览 16 评论 0

在使用Okhttp中,获取json数据时,发现获取的数据不完全。
服务器文件
clipboard.png

使用okhttp请求test2.json(59KB)

···

     OkHttpClient client = new OkHttpClient();
      Request request=new Request.Builder()
        .get()
        .url("http://192.168.31.207/test2.json")
        .build();
     client.newCall(request).enqueue(new getCallBack());

···

getCallBack()为implements Callback(okhttp包下的)的类

重写成功的回调方法
···

public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()){
//                String line ;
//                BufferedReader br = new BufferedReader(new InputStreamReader(response.body().byteStream()));
//                while ((line=br.readLine())!=null){
//                    L.e(line);
//                }
                Reader r = response.body().charStream();
                char[] B = new char[4096];
                int length;
                while ((length=r.read(B))>0){
                    L.e(String.valueOf(B));
                }
                r.read(B);
            }

        }

···

无论是用byteStream还是用reader 都不能获取完整数据
把char数组换成更大100000+也无济于事
clipboard.png

打印的数据残缺。

但是将请求换成test.html(254KB)时又能全部输出

clipboard.png

请问如何能成功的获取json数据?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

江城子 2022-09-11 12:31:06
        @Override
        public void onResponse(Response response) {
            if (response.isSuccessful()) {
                try {
                    final String result = response.body().string();
                    if (!TextUtils.isEmpty(result)) {
                        JSONObject obj = new JSONObject(result);
                        // 解析資料
                    }
                } catch (Exception e) {
                    Log.e(TAG, "Exception = " + e);
                }
            }
        }
微暖i 2022-09-11 12:31:06

通过测试发现,控制行打印的数据有长度限制,并不会将所有的输出进行打印。但是数据是完整的。

酷遇一生 2022-09-11 12:31:06

因为android studio的logcat中一次打印的数据有4M(4*1024k)的显示,所以,如果json中的数据太多,在android studio的logcat中是显示不完全的,如果想款看全部日志,需要把日志导出来查看。这里推荐一种使用notepad++查看的方式:https://zhuanlan.zhihu.com/p/...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文