Форум: "Сети";
Текущий архив: 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