Newsgroups : Borland : borland.public.delphi.internet.winsock : 2006 Dec : Re: IdHTTP Get() With Authorization?
| Subject: | Re: IdHTTP Get() With Authorization? |
| Posted by: | "Slagert" (slage..@slagert.com) |
| Date: | Mon, 1 Jan 2007 19:13:37 |
I'm including a the contents of the Main form's .pas & .dfm files of a small
program that generates an unexpected http 401 error code. The error occurs
when the URL/User/Pswd are changed after the 1st. run. The errors only occur
when using authorization.
Can you see why I'm getting this error? Is there something in the IdHTTP I'm
not resetting between calls to Get()?
-Andy
"Remy Lebeau (TeamB)" <no.spam@no.spam.com> wrote in message
news:4596e36e$1@newsgroups.borland.com...
>
> "Slagert" <slagert@slagert.com> wrote in message
> news:459699ca@newsgroups.borland.com...
>
>> I just tried placing a call to IdHTTP.Request.Clear before I set the
>> URL & Auth info and I get the 401 message even on the 1st. run!
>
> Please show your actual code.
>
>
> Gambit
>
>
====================================
Main.pas
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP;
type
TFormMain = class(TForm)
Panel1: TPanel;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
InStream: TMemoryStream;
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
Uses
IdException;
procedure TFormMain.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHourglass;
Memo1.Clear;
IdHTTP1.Request.Clear;
IdHTTP1.Request.BasicAuthentication := true;
IdHTTP1.Request.Username := Edit2.Text;
IdHTTP1.Request.Password := Edit3.Text;
try
InStream := TMemoryStream.Create;
try
IdHTTP1.Get(Edit1.Text, InStream);
except
on E: EIdException do begin
//Handle Indy exceptions here
end;
end;
InStream.Position := 0;
Memo1.Lines.LoadFromStream(InStream);
InStream.Position := 0;
finally
InStream.Free;
end;
Screen.Cursor := crDefault;
end;
end.
===================================================
DFM File:
object FormMain: TFormMain
Left = 263
Top = 187
Width = 800
Height = 600
Caption = 'HTTP Get() w/ Authorization Demo'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 0
Width = 792
Height = 73
Align = alTop
TabOrder = 0
DesignSize = (
792
73)
object Label1: TLabel
Left = 112
Top = 16
Width = 25
Height = 13
Caption = 'URL:'
end
object Label2: TLabel
Left = 112
Top = 44
Width = 25
Height = 13
Caption = 'User:'
end
object Label3: TLabel
Left = 280
Top = 44
Width = 29
Height = 13
Caption = 'Pswd:'
end
object Button1: TButton
Left = 16
Top = 16
Width = 75
Height = 25
Caption = 'Fetch HTML'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 144
Top = 16
Width = 641
Height = 21
Anchors = [akLeft, akTop, akRight]
TabOrder = 1
end
object Edit2: TEdit
Left = 144
Top = 40
Width = 121
Height = 21
TabOrder = 2
end
object Edit3: TEdit
Left = 312
Top = 40
Width = 121
Height = 21
TabOrder = 3
end
end
object Memo1: TMemo
Left = 0
Top = 73
Width = 792
Height = 493
Align = alClient
ScrollBars = ssVertical
TabOrder = 1
end
object IdHTTP1: TIdHTTP
AllowCookies = True
ProxyParams.BasicAuthentication = False
ProxyParams.ProxyPort = 0
Request.ContentLength = -1
Request.Accept = 'text/html, */*'
Request.BasicAuthentication = True
Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
HTTPOptions = [hoForceEncodeParams]
Left = 8
Top = 80
end
end
none