需要POST一个表单,远程端口不是80,并且需要验证。还需要通过代理,代理也需要验证用户。
用INDY HTTP,可DELPHI 6带的版本有问题:
post出去的时候端口变成默认的80,就是改用80,也还是有问题。
后来升级为INdy10,开始没有编译源码,问题一样的。后来用源码编译才好。
但是还有一个问题,就是idhttp默认是不会用BasicAuth的,就算指定了用户名和密码也没有用,必须设置。
function TUserManager.PostRequest(const user: TUserInfo): boolean;
var
idHttp1:TIdHTTP;
sl:TStrings;
st:TStringStream;
begin
result:=false;
with user do
begin
sl:=TStringList.Create;
sl.Add('add=add');
sl.Add('autodisable=1');
sl.Add('usepassword=1');
sl.Add('enable=1');
sl.Add('userid='+IntToStr(UID));
sl.Add('username='+username);
sl.Add('password='+password);
//sl.Add('');
end;
st:= TStringStream.Create('' );
idHttp1:=TIdHTTP.Create(nil);
idHttp1.HandleRedirects:=true;
idHttp1.RedirectMaximum:=3;
with idhttp1.Request do
begin
BasicAuthentication:=true;
UserAgent:='ProxyRouter ProxyServer.Usermanager';
Username:=FAdminInfo.Username;
Password:=FAdminInfo.Password;
end;
with idHttp1.ProxyParams do
begin
ProxyServer:='localhost';
ProxyPort:=8080;
ProxyUsername:='wengzhishan';
ProxyPassword:='****';
end;
try
idHttp1.Post(FAdminInfo.ServerUrl,sl,st);
if idHttp1.ResponseCode=200 then
result:=true;
finally
idHttp1.Free
end;
///FErrorMsg:= st.DataString;
st.Free;
sl.Free;
end;
posted on 2006-10-31 22:08 dragonimp 阅读(955)
评论(2) 编辑 收藏