【发布时间】:2010-11-22 15:47:40
【问题描述】:
如何在 Android 中发送大型 (>5MB) 后置参数(以及其他后置参数)?
我目前正在使用org.apache.http.client.methods.HttpPost 和BasicNameValuePair 的列表来发送帖子参数。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(someURL);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("param1", "value1"));
nameValuePairs.add(new BasicNameValuePair("param2", hugeValue));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
hugeValue 是一个非常大的字符串,我想从InputStream 中读取它并在读取时发送。我该怎么做?
【问题讨论】:
-
走这条路你可能会耗尽内存,尤其是在较小的手机上。您可能需要使用
java.net包中较低级别的HttpUrlConnection内容。 -
这正是问题所在。我的内存快用完了。
-
如果您控制服务器端,您可以将字符串写入流、gzip (java.util.zip) 并作为二进制文件上传。一些外部库,如 apache.mime 和 commons.io 会有所帮助。
标签: android http post http-post