8

IndyHTTPクラスを使用してHTTP認証を実行しようとしています。しかし、いくつかの不明な理由により、次の行でアクセス違反エラーが発生しています 。IdHTTP1.Request.Authentication.Username:= Username;

コードストレッチは次のとおりです。

  IdHTTP1:= TIdHttp.Create(Application);
  IdHTTP1.ConnectTimeout:= 10000;
  IdHTTP1.Request.Clear;
  IdHTTP1.Request.BasicAuthentication:= true;
  IdHTTP1.Request.Authentication.Username := Username;
  IdHTTP1.Request.Authentication.Password := Password;
      try
        IdHTTP1.Get(PbxURL);
        HttpCode := IdHTTP1.ResponseCode;
      except
        on E: EIdHTTPProtocolException do
          HttpCode := IdHTTP1.ResponseCode;

私はDelphi2010を使用しており、すでに次のようなことを試みています 。IdHTTP1.Request.Authentication.Username:='admin'; しかし、問題を解決しませんでした...

4

2 に答える 2

20

簡単なチェックから、がtrueの場合、必要はないIdHTTP.Request.Authentication(したがって、何も作成されない)ように見えRequest.BasicAuthenticationます。Request.UserName代わりにとを使用する必要がありRequest.Passwordます。

IdHTTP1:= TIdHttp.Create(Application);
IdHTTP1.ConnectTimeout:= 10000;
IdHTTP1.Request.Clear;
IdHTTP1.Request.BasicAuthentication:= true;
IdHTTP1.Request.UserName := UserName;
IdHTTP1.Request.Password := Password;
于 2012-09-15T20:56:22.753 に答える
3

デフォルトではRequest.Authentication、リクエストが送信され、認証応答が受信されるまでオブジェクトは割り当てられません。その後、OnSelectAuthorizationイベントがトリガーされ、後続のリクエストのためにオブジェクトに割り当てるクラス タイプが決定されます。

オブジェクトを割り当てることができる他の唯一の方法はRequest.Authentication、リクエストを送信する前に独自のコードで手動で行う場合です。たとえば、動的に検出するリクエストを送信せずにサーバーが使用する認証スキームを事前に知っている場合などです。

于 2012-09-16T03:17:08.370 に答える