3

Delphi 2005 から Delphi 2010 にアップグレードしています。この問題が発生しています。次の手順は D2005 ではうまく機能しますが、D2010 では常に結果が得られます。

<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>
<BODY><H1>401 Unauthorized</H1>
Your client does not have permission to get URL /axis-cgi/date.cgi from this server.
</BODY></HTML>

手順上、D2005 では 1 回目で Unauthorized の応答が返されることがあり、2 回目は問題なく接続できるため、2 回接続を試みています。D2010 では、常に Unauthorized の回答が返されます。

URL = 'http://user:pass@xxx.xxx.xxx.xxx/axis-cgi/date.cgi?action=get'

function TViewCameraForm.HttpGet(idHTTP : TidHTTP; Url : AnsiString): AnsiString;
Var
  Res : AnsiString;
Begin
  idHTTP1.Disconnect;
  try
    Res := idHTTP1.Get(Url);
    If Pos('Unauthorized', Res) > 0 Then
        Res := idHTTP1.Get(Url);
    Result := Res;
  except
    on E: EIdHTTPProtocolException do begin
        Result := E.ErrorMessage
    end;
    on E: Exception do begin
        Result := E.message;
    end;
  end;

End;    

ありがとうサム

4

1 に答える 1

7

Basic Auth を使用して認証しようとしましたか?

  ...
  idHTTP1.Request.BasicAuthentication := True;
  idHTTP1.Request.Username := 'user';
  idHTTP1.Request.Password := 'pass';
  Res := idHTTP1.Get(Url);

(user:pass@website の使用は HTTP 仕様に準拠していません)

于 2011-07-18T13:38:14.817 に答える