私のプロジェクトでは、HttpClient を使用して URL を呼び出し、15 ~ 20 個の Base64 文字列で 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();
}
私は次の問題に直面しています
- convertStreamToString() を使用して応答を処理するたびに、応答全体を取得できません。
2 Base64 文字列のサイズが大きすぎるため、StringBuilder は画像全体の文字列を格納できません。この関数は、JSON のごく一部を返すだけです。また、処理に時間がかかりすぎます。