Ответ на ваш вопрос - НЕТ, вы не можете получить идентификатор сеанса от Connect()
, потому что получение идентификатора сеанса требует, чтобы вы сначала сделали HTTP-запрос, чтобы сервер мог отправить ответ, а Connect()
- нет.отправив любой запрос, он просто открывает базовое сокетное соединение с портом прослушивания сервера.Фактический запрос не отправляется, пока вы не вызовете метод TIdHTTP::Get()
(или любой другой метод запроса - Post()
, Put()
, Delete()
и т. Д.).
Кроме того, вы не должны бытьвызов метода TIdHTTP::Connect()
вручную вообще .HTTP - это протокол без сохранения состояния, нет гарантии (или необходимости), что соединение TCP будет сохраняться между несколькими запросами к одному и тому же серверу.Это согласовывается между клиентом и сервером для каждого отдельного запроса, и TIdHTTP
обрабатывает это внутренне, (повторно) подключаясь по мере необходимости для каждого отправленного запроса.Все, что вам нужно сделать, это указать URL-адрес Get()
(или любой другой запрос, который вам нужен), а затем TIdHTTP
анализирует его для извлечения информации о порте host: и управления соответствующим образом сокетным соединением.
Еслисерверу требуется аутентификация на уровне HTTP (в отличие от аутентификации на основе веб-формы), он запросит это в ответе, который обрабатывается TIdHTTP
, если в свойстве TOdHTTP::HTTPOptions
включен флаг hoProcessAuth
, что вызывает запуск TIdHTTP::On(Select)Authorization
событий по мере необходимости, поэтому он может повторить запрос с добавленной информацией аутентификации.В свойстве TIdHTTP::Request
доступны также подвойства Username
и Password
.