Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 20:41   #1
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию Не получается в Post запросе передать длинный текст

Господа! Наверно всем известно, что на длину передаваемой post-запросом строки никаких ограничений нет. Во всяком случае нигде о таких ограничениях сообщений не встречал. Но вот беда - не могу передать в post'e текст объемом 139 килобайт. Текст на порции при передачи на сервер делить крайне не желательно. Потому и прошу помочь разобрать с этой проблемой.

Вот код, который успешно отправляет данные меньшего объема:
Код:
var
  ToServer: TStrings;
  Response: TStringStream;
begin
  ToServer := TStringList.Create;
  Response := TStringStream.Create('');
  ToServer.Clear;
  ToServer.Add('user='+ansitoutf8(TextToServer));
  ToServer.Add('nn='+ansitoutf8(Form1.GetUserFromWindows));
  try
    Form1.IdHTTP1.HandleRedirects := True;
    Form1.IdHTTP1.Post('http://painter.tut.su/d.php',ToServer,Response);
    //Memo1.Text:=Response.DataString;
    Response.Free;
    ToServer.Free;
  except
    ShowMessage('Нет ответа сервера.');
  end;
В переменной TextToServer собственно и должен содержаться текст.
Небольшие тексты улетают "на ура", но вместо текста объемом в 139 килобайт приходит пустая строчка.

Вот пример такого текста: document.txt

Прошу Вашей помощи в разрешении вопроса отправки большого объема данных методом post, ведь вполне возможно, что придется передавать и куда большие объемы текста.

Заранее спасибо.
С уважением, theYozh.
theYozh вне форума Ответить с цитированием
Старый 11.05.2009, 21:17   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Размер ограничивается только настройками сервера. А через браузер такой запрос отправляется ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 11.05.2009, 21:23   #3
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию

Спасибо за ответ.
Через браузер не пробовал.
Значит, единственное рациональное решение - делить отправляемый текст на порции?

Попробовал: через браузер запрос отправляется. Правда русские символы не так кодированы, но это уже другая история, решаемая в 2 счета. А главная проблема остается не проясненной.
Квэнди, жду Вашего мнения по ситуации

Последний раз редактировалось theYozh; 11.05.2009 в 21:34. Причина: вот так вот
theYozh вне форума Ответить с цитированием
Старый 11.05.2009, 21:43   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. Посомтрите снифером запрос через браузер
2. сверьте его с вашим запросом, посмотрите разницу.
3. Попробуйте воспользоваться TIdMultiPartFormDataStream пример работы с ним есть в этом разделе, в поиске найдется быстро
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 11.05.2009, 21:48   #5
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию

Я уже видел примеры с использованием TIdMultiPartFormDataStream, но ведь отправляется не файл, а текст? Или это просто для снятия ограничения по объему данных?

PS
Сниффером сейчас посмотреть не могу - придется устанавливать. Как посмотрю обязательно отпишусь.
theYozh вне форума Ответить с цитированием
Старый 11.05.2009, 23:23   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Нет никакого ограничения, поймите. Если нет желания использовать TIdMultiPartFormDataStream, то прост закодируйте ваш текст в BASE64 , ибо именно так он должен быть отправлен. Методы для кодирования в base64 в Indy есть, в help-е поищите
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 12.05.2009, 02:43   #7
Виталий Серов
Заснувший
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 213
По умолчанию

Цитата:
но вместо текста объемом в 139 килобайт приходит пустая строчка
Может стоит проверить перед отправкой переменную? Возможно она = ''

Последний раз редактировалось Виталий Серов; 12.05.2009 в 02:46.
Виталий Серов вне форума Ответить с цитированием
Старый 12.05.2009, 06:45   #8
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию

Кстати возможно. Спасибо за идею. Сейчас пишу с мобильника, а вечером смогу проверить за компом. А кто-нибудь может сказать существуют ли какие-нибудь строковые типы длиннее чем string?
theYozh вне форума Ответить с цитированием
Старый 12.05.2009, 08:25   #9
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а куда длиннее string-а ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 12.05.2009, 08:34   #10
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию

Ну малоли
theYozh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается добавить в memo текст больше 255 символов Norton Общие вопросы Delphi 8 01.04.2009 11:58
замена в post-запросе schnaps Работа с сетью в Delphi 1 17.03.2009 21:48
не получается вывести текст sum42 Общие вопросы C/C++ 15 29.11.2008 18:55
ошибка ORA - 01704 (Строковый литерал слишком длинный) MAcK БД в Delphi 1 01.11.2007 09:44
Как передать POST data через запрос в веб-приложение Anticrim Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 3 03.10.2007 18:19