posts - 264,  comments - 574,  trackbacks - 8

随笔分类

文章分类

相册

收藏夹

Weblogs

搜索

  •  

最新评论

需要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)  编辑 收藏
标题  
姓名  
主页
内容   
请输入验证码:
*
  登录  使用高级评论  Top 订阅回复  取消订阅
[使用Ctrl+Enter键可以直接提交]