在使用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数据?
リーリー
テストを通じて、制御線によって印刷されるデータには長さの制限があり、すべての出力が印刷されるわけではないことがわかりました。でもデータは完成してます。
Android Studioのlogcatでは一度に表示されるデータが4M(4*1024k)となっているため、json内のデータが多すぎるとAndroid Studioのlogcatに完全に表示されなくなります。すべてのログを表示するには、ログをエクスポートする必要があります。 notepad++ を使用して表示する推奨方法は次のとおりです: https://zhuanlan.zhihu.com/p/...