Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.07;
Скачать: CL | DM;

Вниз

Ошибка в TIdHTTPServer   Найти похожие ветки 

 
Добежал   (2008-12-09 11:30) [0]

Странный глюк в 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-09 15:45) [1]

up? (


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

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

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


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

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2010.11.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
15-1280428521
Riply
2010-07-29 22:35
2010.11.07
Детектирование исполнителя путем поверхносного анализа :)


15-1280262611
Юрий
2010-07-28 00:30
2010.11.07
С днем рождения ! 28 июля 2010 среда


2-1281683349
12
2010-08-13 11:09
2010.11.07
что-то с message происходит, не знаю как и спросить


15-1280211662
Jeer
2010-07-27 10:21
2010.11.07
Новое -хорошо забытое старое.


15-1280223880
И. Павел
2010-07-27 13:44
2010.11.07
Ассоциация расширений с программами