Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка в TIdHTTPServer


Добежал ©   (2008-12-09 11:30:00) 

Странный глюк в TIdHTTPServer, если в запросе есть и GET, и POST-данные. Картинка:

http://pic.ipicture.ru/uploads/081209/954A2LW4CN.jpg

В нераспарсенных параметрах видно, что идут POST-данные, потом перевод строки и идут GET-данные.
Соответственно, в распарсенных параметрах ARequestInfo.Paramsпоследний параметр выявляется неправильно, к последнему POST-данному прибавляются GET-данные. А если GET-параметров несколько - то в результате получается увеличение количества параметров.

Пример:

- имеем POST-данные такие: action=send&id=1
- имеем GET-данные: /?page=4

В результате, в ARequestInfo.Paramsокажется 2 записи:

1) action=send
2) id=1#13#10page=4

Что, естественно, неверно. Последнее POST-данное слилось с GET-данными. И так происходит всегда.

Вопрос - кто сталкивался с таким глюком, как лечить? Используется Indy от D7. Обновлять сам Indy не очень хочется, подозреваю в дальнейшем кто-то может откомпилить на опять дефолтном дельфи - и встретит такие грабли, что потом запаришься разбираться.

Судя по всему, просто буду вручную парсить POST-параметры. Но хочу точный алгоритм:

1) нужно выделить строку от первого символа (или предыдущего параметра) до знака амперсанда "&" (или конца строки)

2) в этой строке должен быть символ равно "=". До него стоит название параметра, после него стоит значение параметра.

3) над названием параметра и значением параметра нужно провести преобразование по некоему алгоритму, чтобы превратить в win-1251 символы.
Где в indy этот алгоритм преобразования? По-моему, где-то должен быть... Чтобы все было НАИБОЛЕЕ корректно или готовую функцию трансляции параметров...

Я ничего не забыл?

Или возможны другие варианты решения проблемы?


Добежал   (2008-12-10 11:49:00) [1]

а, сделал распарсивание параметров просто вручную...


Cobalt   (2008-12-09 18:08:00) [2]

Патч к "Indy от D7"?

А чтобы не откомпилили на "дефолтном" - вставь какой-нить define в патче, а в своём модуле проверяй.


Cobalt   (2008-12-09 18:08:00) [3]

Сделай патч к "Indy от D7"?

А чтобы не откомпилили на "дефолтном" - вставь какой-нить define в патче, а в своём модуле проверяй.


Добежал   (2008-12-09 15:45:00) [4]

up? (


Наверх

Титульная страница Поиск, карта сайта Написать письмо