以下代码:
//
// Define HTTP Post and content
//
HttpPost httppost = new HttpPost(url);
ByteArrayEntity be = new ByteArrayEntity(strPostData.getBytes("UTF-8"));
httppost.setEntity(be);
//
// Define HTTP Client
//
HttpClient httpclient = new DefaultHttpClient();
HttpParams httpParameters = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 10 * 1000);
//
// Sets the default socket timeout
// in milliseconds which is the timeout for waiting for data.
//
int timeoutSocket = 10000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpResponse response = httpclient.execute(httppost);
//
// This line takes too long on big responses
//
String content = EntityUtils.toString(response.getEntity());
当我的响应包含大量字节时,最后一行 (EntityUtils.toString) 花费的时间太长。
我正在使用 HTTP Post 检索 PDF 文件(最大 500 Kb),每个请求可能需要 1 或 2 秒,这太多了。
编辑信息:PDF 文件采用 base 64 编码并包装到 XML 标记中(字符串在接收后解析)。
有什么方法可以让我的字符串响应更快吗?
编辑 2:为了知道我的 EntityUtils.toString 花了多少时间,我做了一个方法:
public static void logger(String header, String content) {
Date dateActualLog = new Date();
long milliseconds = (dateActualLog.getTime() - dateLastLog.getTime());
Log.d(header, String.valueOf(milliseconds) + " => " + content);
dateLastLog = dateActualLog;
}
(仅供参考:dateLastLog 是一个静态变量)
我像这样修改了上面的代码:
//
// This line takes too long on big responses
//
logger(TAG, "toString ...");
String content = EntityUtils.toString(response.getEntity());
logger(TAG, "toString OK");
提前致谢。