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

Вниз

TidTCPServer и HTTP-запросы   Найти похожие ветки 

 
Орион ©   (2006-08-24 15:28) [0]

Нужно написать что-то вроде proxy-сервера, но запросы нужно получать полностью и в сыром виде (для дальнейшей обработки).

Так вот, как правильно принять get/post запрос от браузера?
Т.е. узнать когда запрос полностью передался.
Ведь TidHTTPServer как-то это делает.


 
Сергей М. ©   (2006-08-24 15:35) [1]


> Ведь TidHTTPServer как-то это делает


Мало того, он дает возможность обработки полного текста принятого запроса.
На то он и TidHTTPServer)


 
Орион ©   (2006-08-24 15:38) [2]


> Мало того, он дает возможность обработки полного текста
> принятого запроса.


Конечно) Но обратно получить "сырой" запрос нельзя. Или все же можно?
Тогда подскажи, пожалуйста, как?


 
Сергей М. ©   (2006-08-24 15:48) [3]


> обратно


"Обратно" - это еще куда ?)


 
Reindeer Moss Eater ©   (2006-08-24 17:43) [4]

Readln в цикле пока не придет пустая строка.
После чего анализ полученного на наличие поля ContentLength
Если поле есть, прочитать его значение и дополнительно считать от браузера буфер такой длины.

Вот и весь заголовок.


 
$hade   (2006-08-25 07:49) [5]

AThread.Connection.ReadLn(EOL+EOL);
заголовок оканчиватся двумя End Of Line


 
Орион ©   (2006-08-25 13:13) [6]


> заголовок оканчиватся двумя End Of Line

Так и есть. Но кроме заголовка еще могут быть post-данные. И здесь куча мелочей: "Content-length", "Transfer-Encoding: chunked".

Сейчас я задам вопрос от которого вам станет смешно))
Чувствую себя нубом.

Есть ли класс, который полностью считывает запрос от браузера с учетом всех тонкостей реализации HTTP 1.1?

ЗЫ: TIdHTTPServer не подходит, т.к. в нем нельзя получить нераспарсенный запрос.


 
Орион ©   (2006-08-25 17:10) [7]

up)


 
Slym ©   (2006-08-28 05:31) [8]

Орион ©   (25.08.06 13:13) [6]
TIdHTTPServer не подходит, т.к. в нем нельзя получить нераспарсенный запрос

Можно...


 
Slym ©   (2006-08-28 05:35) [9]

ParseParams:=false;
или
RequestInfo.UnparsedParams


 
Орион ©   (2006-08-28 10:35) [10]

> [9] Slym ©   (28.08.06 05:35)

Это не заголовок ;) это параметры GET/POST запроса.
В общем я разобрался с HTTPServer, но необходимость в нем уже отпала))

Но если кому интересно:

procedure TForm1.HTTPServerCommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Data: TStringList;
begin
Data:=TStringList.Create;
for i:=0 to ARequestInfo.RawHeaders.Count-1 do
Data.Add(ARequestInfo.RawHeaders.Names[i]+ARequestInfo.RawHeaders.NameValueSeparator+ARequestInfo.RawHeaders.Values[ARequestInfo.RawHeaders.Names[i]]);
Data.Add("");
//         Data                                ,              ,          
FreeAndNIl(Data);
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1168197505
anton773
2007-01-07 22:18
2007.01.28
разобрать число


15-1168244906
Nic
2007-01-08 11:28
2007.01.28
Регистрация Turbo Delphi :)


15-1167509299
vasIZmax
2006-12-30 23:08
2007.01.28
Распечатать текст программы...


2-1168607734
Plotnick
2007-01-12 16:15
2007.01.28
Unicode


15-1167984292
DeadMeat
2007-01-05 11:04
2007.01.28
"Родные" *.ЕХЕ от Висты не работают в ХР