Ограничение размера строки при публикации на сервере - PullRequest
0 голосов
/ 01 ноября 2011

Я отправляю строку на сервер.Если размер строки до 6000 КБ, значит, она успешно размещена.Но когда размер превысил больше, это показывает ответ -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 ]

3 голосов
/ 01 ноября 2011

Теоретически, URI в HTTP-запросе может быть любой длины, но практический предел составляет порядка 2 КБ. Пожалуйста, прочитайте здесь для получения дополнительной информации об этом.

Я предполагаю, что длина исходит из параметров строки запроса (тех пар name=value, которые идут после ?). Вы должны поместить их в данные POST, оставляя только часть path URI. Конечно, сервер должен будет искать эти параметры и в данных POST.

1 голос
/ 01 ноября 2011

Не совсем точно, чего именно вы пытаетесь достичь, но это определенно выглядит неправильно:

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.

1 голос
/ 01 ноября 2011

Правильно ли вы передаете пары NameValue. Это один успешный способ, которым я пользуюсь.

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

тогда вы делаете

httppost.setEntity(new UrlEncodedFormEntity(loginParams));

и приступить к выполнению

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...