发布到服务器时字符串的大小限制

时间:2011-11-01 07:28:45

标签: android string http

我正在向服务器发布一个字符串。如果字符串大小高达6000KB,则其成功发布。但是当尺寸超过它的显示响应-1时。

我尝试过发布方法: syn_data1 是字符串。记录从数据库中获取然后附加到字符串构建器,最后我从字符串构建器

创建synData1字符串
URL url = new URL(syn_data1);
URLConnection urlc = url.openConnection();
HttpURLConnection huc = (HttpURLConnection)urlc;
huc.setRequestMethod("POST");
huc.setConnectTimeout(3000);
huc.connect();
int response = huc.getResponseCode();

我确实关心每个特殊角色并删除。但我没有成功

3 个答案:

答案 0 :(得分:3)

理论上,HTTP请求中的URI可以是任意长度,但实际限制大约为2k。有关详细信息,请read here

我假设长度来自查询字符串参数(name=value之后的那些?对)。您应该将这些内容放在POST数据中,只保留URI的path部分。当然,服务器也必须在POST数据中查找这些参数。

答案 1 :(得分:1)

您是否正确传递了NameValue对。这是我使用的一种成功方式。

 List<NameValuePair> loginParams = new ArrayList<NameValuePair>(1);
 loginParams.add(new BasicNameValuePair("ColumnName In DB",YourString));

然后你做

httppost.setEntity(new UrlEncodedFormEntity(loginParams));

然后继续执行

答案 2 :(得分:1)

目前尚不清楚你想要达到的目标,但这看起来确实是错误的:

URL url = new URL(syn_data1.toString());
URLEncoder.encode(syn_data1.toString(),"UTF-16BE");

如果syn_data1已经是一个字符串,则无需在其上调用toString ..并且调用URLEncoder.encode没有任何副作用,因此第二个语句毫无意义。也许你想要:

URL url = new URL(URLEncoder.encode(syn_data1, "UTF-16BE"));

这只是在编码方面 - 你仍然不应该尝试使用大量的URL。如果您有大量数据,那么应该在请求正文中而不是URL中。