发送httpPost请求时,内存溢出。求大神指教。

ccuuiiccaann 2015-11-05 08:36:40
本人写的一个发送http请求的类,Android端在使用时new UrlEncodedFormEntity(nvps, "UTF-8"));这句内存溢出outofmemory。
使用场景是这样的:Android端相当于是有个表单,会同时提交很多张图片,每张图片都是处理成很长的字符串之后,放在List<NameValuePair> nvps里面作为参数提交给服务端。tomcat的maxPostSize也设置为了0(无限制)。
代码如下,求大神指点。
public static String httpRequest(String url, List<NameValuePair> nvps) {
String respCode = null;
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
HttpResponse resp = httpclient.execute(httpPost);
HttpEntity entity = resp.getEntity();
if (resp.getStatusLine().getStatusCode() == 200) {
respCode = EntityUtils.toString(entity);
} else {
respCode = "1000";
}
} catch (Exception e) {
respCode = "1000";
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return respCode;
}
虽然问题是出在Android端,但是代码是复制的java服务端的(管理员手下留情勿删帖啊^_^)。java写的web提交表单啥的也都是用的这段代码,目前还未出现这样的问题。不过还未测试图片过多的情况。不知道是这个方法有问题,还是Android端用的时候出了问题。恳请大神指点迷津,不胜感激!
...全文
957 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2015-11-30
  • 打赏
  • 举报
回复
二进制文件不用全部读进内存,可以读1k写1k
聪头 2015-11-11
  • 打赏
  • 举报
回复
如果是表单应该没问题。如果有文件上传,最好有大小限制。
tianfang 2015-11-10
  • 打赏
  • 举报
回复
二进制文件怎么编码的? 把二进制文件设置为utf-8的字符串,导致直接出现非法字符,引起内存溢出 直接提交二进制文件 节约客户端内存 http://www.cnblogs.com/smarterplanet/p/3471426.html
eewcee 2015-11-05
  • 打赏
  • 举报
回复
手机端内存比较小,那句语句可能把图片读取到内存中了,吃不消。 建议看下源码的实现,另找下安卓图片上传的实现方案。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧