Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.048 c
2-1168456268
FLOGISTONE
2007-01-10 22:11
2007.01.28
функции времени


4-1158316591
R_O_O_T
2006-09-15 14:36
2007.01.28
помогите с SETUPAPI.dll )))


15-1166712306
vidiv
2006-12-21 17:45
2007.01.28
Программа, которая выводит собственный листинг


2-1168617866
Apachi
2007-01-12 19:04
2007.01.28
Работа с командной строкой


2-1168125535
Тема
2007-01-07 02:18
2007.01.28
Создание клиент-серверного сетевого чата





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский