【发布时间】:2013-04-26 12:57:39
【问题描述】:
我要做的是从一个 url 生成一个字节数组。
byte[] data = WebServiceClient.download(url);
url 返回 json
public static byte[] download(String url) {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get);
StatusLine status = response.getStatusLine();
int code = status.getStatusCode();
switch (code) {
case 200:
StringBuffer sb = new StringBuffer();
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
is.close();
sContent = sb.toString();
break;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sContent.getBytes();
}
这个data被用作String的参数
String json = new String(data, "UTF-8");
JSONObject obj = new JSONObject(json);
由于某种原因,我收到此错误
I/global ( 631): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
我认为这里sContent = sb.toString(); 或这里return sContent.getBytes(); 一定缺少某些东西,但我不确定。
【问题讨论】:
-
这是 android (Dalvik VM) 吗?
-
如果您执行
new BufferedReader(new InputStreamReader(is), 8192);,错误会消失吗? -
我建议你使用 BufferedInputStream 来读取 4 或 8 KB 的数据块,而不是处理字符数据和弄乱字符集。
-
顺便说一句,您可以使用 StringBuilder 代替 StringBuffer:在局部变量中,不需要同步操作