这是我的代码,我的字符串line
没有读取整个回复:
int bufferSize = 10240 ; // 10KB.
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream),bufferSize);
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
先谢谢
答案 0 :(得分:0)
您应该使用String
获得sb.toString()
的完整回复。
如果要将结果直接存储到文件中,可以使用以下内容:
private void storeToFile(InputStream input, String destFilename) {
FileOutputStream fos = null;
try {
byte[] buffer = new byte[2048];
fos = new FileOutputStream(destFilename, false);
int read = 0;
while (read >= 0) {
if (read > 0) {
fos.write(buffer, 0, read);
fos.flush();
}
read = input.read(buffer, 0, buffer.size());
}
} catch (Exception ex) {
Log.e(getClass().getName(), "error saving stream", ex);
} finally {
if (fos != null) {
try {
fos.close();
} catch (Exception ex) {
}
fos = null;
}
}
}
当然,您也可以在SQLite中将响应存储为blob
或String
,但我宁愿使用openFileOutput(destFilename, Context.MODE_PRIVATE)
而不是new FileOutputStream(destFilename, false)
将响应存储为私有文件。然后,您可以将文件名存储在SQLite数据库中。这使SQLite-DB文件更小,您的查询将更快。但是您无法在查询中使用您的响应文本作为过滤器。
答案 1 :(得分:0)
您应该尝试GZIPInputStream来解决此类问题。
http://developer.android.com/reference/java/util/zip/GZIPInputStream.html