Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Преобразование амперсанда при POST-запросе


Автор: DDDsa 28.3.2009, 14:45
Помогите, пожалуйста, разобраться. Делаю POST-запрос следующим образом:
Код

var
data:tstringlist;
begin
  data := tstringlist.Create;
  data.Add('text='+editor.text);
  idhttp1.Post('http://site.ru/page/',data);
  data.free;
end;


В общем-то все в порядке,но если в editor.text присутствует амперсанд, то все, что за ним следует - отрезается. Что, в общем-то, логично. Если использовать вместо амперсанда %26, то все в порядке, ничего не отрезается, но на сайте эти %26, почему-то, не обрабатываются. То есть отправляю "123 %26 123", отображается "123 %26 123". Если приписывать 
Код

idhttp1.Request.ContentType := 'application/x-www-form-urlencoded';

ничего не меняется.

Если же отправлять данные через форму на сайте, то там, опять же, не преобразовывается %26, зато простой амперсанд виден нормально. Смотрел через FireBug, там отправляется просто, без всяких преобразований. То есть если я ввел в форму "123&123", то запрос выглядит text=123&123.

Автор: Matematik 28.3.2009, 15:50
Попробуй отключить hoForceEncodeParams в IdHTTP1.HTTPOptions

Автор: DDDsa 28.3.2009, 16:59
Matematik, отключил, амперсанды начали УРЛЭнкодиться. 
Спасибо!!

Автор: DDDsa 28.3.2009, 18:41
Рано я радовался. Почему-то теперь отправляет только первую строчку (у меня текст содержится в richedit) : (
Все, все. Применил к тексту нормальный URLEncode, который преобразовал все, включая  #10 и #13. Работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)