0

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!');

したがって、「Get」メソッドの後、「Get」が完了するのを待たずに実行を続行するため、正しいHttpCode値を取得していないことに気付きました。どうすればこの問題を解決できますか?

4

1 に答える 1

5

正しい HttpCode を取得していないということは、HttpCode を取得していることを示唆しています。これ、Get メソッドが結果を取得するのに必要なだけ待機したことを意味します。

取得した応答コードが 301 の場合は、HandleRedirects プロパティを設定して、返されたアドレスを使用して要求を自動的に再発行するようにしてください。それ以外の場合は、応答を自分で処理する必要があります。

Get 関数は途中で戻りません。あなたは観察したことを誤解しています。

于 2012-09-16T02:51:21.330 に答える