IdHTTP. Не ждите ответа
У меня проблемы с методом Idhttp.Get. Я думал, что по умолчанию он работает в режиме блокировки (подождите, пока ответ не перейдет к следующей строке), но я только что увидел, что он не ждет, когда ответ перейдет на другую строку. Я использую это с потоками, но я думаю, что это не проблема. Код является:
IdHTTP1:= TIdHttp.Create(Application);
IdHTTP1.ConnectTimeout:= 10000;
IdHTTP1.Request.Clear;
IdHTTP1.Request.BasicAuthentication:= true;
IdHTTP1.Request.Username := Username;
IdHTTP1.Request.Password := Password;
try
IdHTTP1.Get(PbxURL); **//this should STOP here and wait for answer don't?**
HttpCode:= IdHTTP1.ResponseCode;
except
on E: EIdHTTPProtocolException do
HttpCode := IdHTTP1.ResponseCode;
end;
if HttpCode=200 then
Memo1.Lines.Append('Valid Get!');
Итак, я просто замечаю, что не получаю правильное значение HttpCode, потому что после метода "Get" он просто продолжает выполнение, не дожидаясь завершения "Get". Как я могу решить эту проблему??
1 ответ
Вы говорите, что не получаете правильный HttpCode, который предполагает, что вы получаете HttpCode, и это означает, что метод Get ждал столько времени, сколько необходимо для получения результата.
Если код ответа, который вы получили, - 301, то вам следует попытаться установить свойство HandleRedirects, чтобы оно автоматически повторяло запрос, используя возвращенный адрес. В противном случае вам придется обрабатывать ответ самостоятельно.
Функция Get не возвращает преждевременно. Вы неверно истолковываете то, что наблюдали.