찾다

 >  Q&A  >  본문

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

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

使用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+也无济于事

打印的数据残缺。

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

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

迷茫迷茫2772일 전662

모든 응답(3)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-18 09:07:49

    으아악

    회신하다
    0
  • 阿神

    阿神2017-04-18 09:07:49

    테스트를 통해 제어선으로 인쇄되는 데이터에는 길이 제한이 있어 모든 출력이 인쇄되지 않는 것으로 나타났습니다. 그러나 데이터는 완전합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 09:07:49

    android studio의 logcat에 한번에 출력되는 데이터는 4M(4*1024k)이 표시되기 때문에 json에 너무 많은 데이터가 있으면 android studio의 logcat에 완전히 표시되지 않습니다. 모든 로그를 보려면 로그를 내보내야 합니다. 다음은 메모장++를 사용하여 보는 권장 방법입니다: https://zhuanlan.zhihu.com/p/...

    회신하다
    0
  • 취소회신하다