我正在向服务器发布一个字符串。如果字符串大小高达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();
我确实关心每个特殊角色并删除。但我没有成功
答案 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中。