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 не возвращает преждевременно. Вы неверно истолковываете то, что наблюдали.

Другие вопросы по тегам