在我的项目中,我使用HttpClient调用URL,并使用15-20 Base64 String获取JSON响应。 HttpClient代码如下。
public static JSONObject TestHttpPost(String url,
List<NameValuePair> nameValuePairs) {
long t = System.currentTimeMillis();
HttpClient client = new DefaultHttpClient();
Log.i(TAG, "HTTPResponse received in ["
+ (System.currentTimeMillis() - t) + "ms]");
HttpPost post = new HttpPost(url);
try {
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String resultString = convertStreamToString(rd);
JSONObject jsonObjRecv = new JSONObject(resultString);
Log.i(TAG, "<JSONObject>\n" + jsonObjRecv.toString()
+ "\n</JSONObject>");
return jsonObjRecv;
} catch (Exception e) {
return null;
}
}
private static String convertStreamToString(BufferedReader reader) {
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
我正面临以下问题
2由于Base64字符串大小太大,StringBuilder无法存储整个图像String。该函数只返回JSON的一小部分。而且需要花费太多时间来处理。
答案 0 :(得分:0)
Log.i()在一定数量的字符后截断字符串的值。您可能收到了字符串,但无法打印它。以块的形式打印字符以解决问题。分配给logcat的环形缓冲区是64k。