首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问一下,IdHTTP post登录网站的做法

2012-02-03 
请教一下,IdHTTP post登录网站的做法想做一个读取邮箱的功能,这里用的是TOM的邮箱.代码如下procedure TFor

请教一下,IdHTTP post登录网站的做法
想做一个读取邮箱的功能,这里用的是TOM的邮箱.

代码如下

procedure TForm1.LoginTomClick(Sender: TObject);
var
  sPackage:Tstrings;
begin
  IdHTTP1.ReadTimeout:=20000;
  IdHTTP1.AllowCookies:=true;
  if Assigned(IdHTTP1.CookieManager) then
  IdHTTP1.CookieManager.CookieCollection.Clear;
  IdHTTP1.Request.Referer:='';
  IdHTTP1.HandleRedirects:=true;
  IdHTTP1.HTTPOptions:=[hoKeepOrigProtocol]; //hoForceEncodeParams
  IdHTTP1.ProtocolVersion:=pv1_1;
  IdHTTP1.Request.Connection:='keep-alive';
  IdHTTP1.Request.AcceptLanguage:='zh-cn,en-US;q=0.5';
  IdHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 2.0.50727)';

  sCookList := 'tom_test=djx867uzU!60!5!1270773219!1271473890!13!1271470436!http://mail.tom.com/!;'+
  ' vjuids=3dfe4b0e9.127dffc8129.0.5ba212ffc6e89; vjlast=1270773220.1271468863.11; '+
  'TOM_USERNAME=likeyrain; ad_-.-AD-.-=m5UeE1yLG!16!4!1270775139!3!698752!8!0!0!null!!1271473891!!!; TUV=1271041674484841; name=postmailtest@tom.com%20%20';

  HostUrl:='http://mail.tom.com';
  creferer:='http://www.tom.com';

  sPackage:=TstringList.Create;
  sPackage.Add('type = 0');
  sPackage.Add('user = postmailtest');
  sPackage.Add('in_username = postmailtest@tom.com');
  sPackage.Add('pass = 123456');
  sPackage.Add('style = 21');
  sPackage.Add('verifycookie = y');

  IdHTTP1.Request.Referer:=creferer;
  IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
  memo1.Lines.Text := IdHTTP1.Post(HostUrl, sPackage);
  sPackage.Free;
end;

但是这样反回的,并不是登录成功的内容,不知道上面是哪里错了,或者还有什么事情没做?

[解决办法]
诸如此类数据你是如何得到的
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 2.0.50727)';

推举用WSockExpert 截取一下,看看和你上面的有差别没有。

感觉你截取的少了一些参数

[解决办法]
看它返回什么错误给你,然后你根据错误信息更改
[解决办法]
“http/1.1 405 method not allowed”,网上查的结果是邮箱服务器不容许静态POST,还有什么其他办法不?

这个就没办法了,换个邮箱服务器。
[解决办法]
使用代理

热点排行