Главная страница
    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.47 MB
Время: 0.048 c
15-1167892676
Прогер
2007-01-04 09:37
2007.01.28
idMessage Subject/From ISO-8859-1


15-1167339007
Ringo
2006-12-28 23:50
2007.01.28
О тщетности всякого усилия.


2-1168365957
Bolt
2007-01-09 21:05
2007.01.28
MDI Приложение


15-1168006020
IMHO
2007-01-05 17:07
2007.01.28
Вечная компьютерная игра


11-1146387189
gugua
2006-04-30 12:53
2007.01.28
Движение курсором мыши над ListView в режиме VirtualListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский