Главная страница
    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.052 c
2-1168113814
Officeman
2007-01-06 23:03
2007.01.28
TCPClient > TCPServer


4-1158196138
KiloBait
2006-09-14 05:08
2007.01.28
Программное закрытие консольного окна в WinXP


15-1166616949
Иксик
2006-12-20 15:15
2007.01.28
Как по исходному коду определить какую траву курили программисты?


15-1168324917
zdm
2007-01-09 09:41
2007.01.28
Со всеми прошедшими и наступающими!!!


15-1168066455
vidiv
2007-01-06 09:54
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский