java如何减少向远程服务器发送数据的时间?
例如,我的平板电脑中存储了10MB的数据。数据具有列表结构。列表中的每个条目约为3500字节
目前,我每次发送一条带有以下代码的条目:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(ipport+ phpHandler);
HttpResponse response = null;
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));
response = httpclient.execute(httppost);
} catch (UnsupportedEncodingException e) {
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
但是要发送这个10MB的数据,需要很长时间。每次发送条目大约需要1秒的时间
有什么办法可以提高效率
# 1 楼答案
我同意“艾哈迈德”的回答。最好使用jSON字符串对象,然后使用gzip库进行压缩
对于JSON,有很多有用的教程。下面的链接非常有用
http://www.vogella.com/articles/AndroidJSON/article.html
在这里,您可以看到编写json的简单方法
为了使用gzip进行压缩和解压缩,我在这里添加了一些来自答案https://stackoverflow.com/a/6718707/931982的示例代码
# 2 楼答案
您可以构建一个包含所有实体的JSON字符串对象,然后使用gzip或任何其他压缩方案对其进行压缩
构建JSON对象的好处是可以将所有对象作为一个请求传输,而不是单独发送。这将消除每次建立新连接的延迟
这段代码将使用listData中的所有元素构建一个JSONArray(它应该是一个字符串列表)
现在,您可以使用
现在,您可以通过网络发送此JSON字符串,并且可以轻松地用任何服务器端语言反序列化JSON对象
至于Gzip压缩,您可能想看看这个link
这里有一个关于在android中通过HTTP发送GZip压缩数据的问题
GZip POST request with HTTPClient in Java