Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';无法使用BufferedReader从服务器获取所有数据_Android_Bufferedreader - Fatal编程技术网

Android Can';无法使用BufferedReader从服务器获取所有数据

Android Can';无法使用BufferedReader从服务器获取所有数据,android,bufferedreader,Android,Bufferedreader,我使用以下代码从服务器读取json数据: URL url = new URL("www.example.com/serverData.php"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.connect(); BufferedReader bufferedReader = new

我使用以下代码从服务器读取json数据:

URL url = new URL("www.example.com/serverData.php");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()), 8*1024);
String next;
StringBuilder total = new StringBuilder();
while ((next = bufferedReader.readLine()) != null){
    total.append(next).append('\n');
}
此代码未从服务器获取所有数据。当我尝试下一行获取数据长度时,它显示大约6000个字符,而服务器返回的字符超过10000个

Log.d("Stream", String.valueOf(total.length()));

我做错了什么?有人能帮我吗?

我想问题是因为您指定了8K块大小来读取,而没有相应地使用相同大小的块来调整读取循环。 您可以根据预期大小调整循环以进行读写:

int BUFFER_SIZE = 8 * 1024;
BufferedInputStream origin = new BufferedInputStream(httpConn.getInputStream(), BUFFER_SIZE);
ByteArrayOutputStream bas = new ByteArrayOutputStream();
byte data[] = new byte[BUFFER_SIZE];
int count;
while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) {
    bas.write(data, 0, count);
}
origin.close();
bas.close();
Log.d("Stream", bas.toString("UTF-8"));
如果您不喜欢读取块大小(即,您可以使用平台默认值),则可以尝试如下更改代码:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

你说的是字节还是字符?或者两者都有?