300分求特定论坛顶帖机的制作。(300分)

  • 主题发起人 主题发起人 speari
  • 开始时间 开始时间
S

speari

Unregistered / Unconfirmed
GUEST, unregistred user!
针对此论坛
http://www.cityin.cn/bbs/list.asp?boardid=50
需要实现的功能只是指定一个帖子链接,然后顶帖。谁给出主要的思路就可以了。希望看在高分的面子上尽量详细些。
 
极其简单,用idhttp控件实现登陆,分析出它的发贴页面参数,就可以提交数据了!
 
能不能帮分析一下,我现在 POST不出去。唉。。
 
其实就是这个论坛,我是针对这个论坛
http://www.cityin.cn/bbs/index.asp
做一个脱机回复软件。
用的是idhttp,看了很多代码,但我是菜鸟,有些地方还是不太明白:

1,登录经常不成功,谁能帮我用idhttp的post方法登录成功试试,论坛用户名speari1981,密码111111,谢谢给出登录成功的代码,谢谢啊。

2,进而求其次,登录成功之后,往任一帖子随便回复一些内容,然后返回数据,只要自己不手动中止,就一直往原来的帖子顶帖。

谁能帮我解决啊,谢谢各位大侠百忙中帮看一看,我还有300多分,加上这一共是600,一并奉上。谢谢了。
 
procedure TForm1.Button1Click(Sender: TObject);
const
BaseURL = 'http://www.cityin.cn/bbs/'; //论坛所在地址
UserName = 'speari'; //登录用户名
Password = '111111'; //登录密码

CookieNone = 0; //不保留Cookie
CookieDay = 1; //保留Cookie一天
CookieMonth = 2; //保留Cookie一月
CookieYear = 3; //保留Cookie一年

UserNormal = 2; //正常登录
UserHidden = 1; //隐身登录

BoardID = 2; //DVBBS中的灌水乐园,其他只用知道版块号即可,也可根据得到的页面自动提取版块号
var
Params: TStrings;
HTML: String;
MD5Pass: String;
p1,p2: Integer;
begin
Params:=TStringList.Create;
try
Params.Add('username='+UserName);
Params.Add('password='+Password);
Params.Add('CookieDate='+InttoStr(CookieNone));
Params.Add('userhidden='+InttoStr(UserNormal));
Params.Add('comeurl='+BASEURL+'index.asp');
HTML:=IdHttp1.Post(BaseURL+'login.asp?action=chk',Params);
if Pos(BASEURL+'index.asp',HTML)=0 then
begin
ShowMessage('登录失败');
Exit;
end;

HTML:=IdHttp1.Get(BASEURL+'announce.asp?boardid='+InttoStr(BoardID));
p1:=Pos('Dvbbs.MemberWord=''',HTML);
if p1=0 then
begin
ShowMessage('获取HTML失败!');
Exit;
end;
Inc(p1,18);
p2:=PosEx('',HTML,p1);

MD5Pass:=Copy(HTML,p1,p2-p1);

Params.Clear;
Params.Add('followup=');
Params.Add('rootID=');
Params.Add('star=');
Params.Add('TotalUseTabl=');
Params.Add('upfilerename=');
Params.Add('username='+UserName);
Params.Add('passwd='+MD5Pass);
Params.Add('font='+'[灌水]');
Params.Add('subject='+'测试,请版主删除!'); //发帖标题,不得超过 25 个汉字或50个英文字符
Params.Add('Expression='+'face1.gif'); //发帖心情,请自行查阅心情图片名称
Params.Add('Content='+'测试,请版主删除!'+#13#10+'测试内容'); //发帖内容
Params.Add('emailflag='+'yes'); //有回复时使用邮件通知您?
Params.Add('signflag='+'yes'); //是否显示您的签名?

IdHttp.Request.Referer:=BASEURL+'announce.asp?boardid='+InttoStr(BoardID);
HTML:=IdHttp1.Post(BaseURL+'Saveannounce.asp?boardID='+InttoStr(BoardID),Params);
if Pos('错误信息',HTML)>0 then
ShowMessage('发帖不成功!')
else
ShowMessage('发帖成功!');
finally
Params.Free;
end;


{var
strMsg:string;
S:TStringList;
begin
idHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
S := TStringList.Create;
S.Add('user='+edit1.text);
S.Add('pass='+edit2.text);
try
strMsg:=idHTTP1.Post('http://www.cityin.cn/bbs/dispbbs.asp?boardID=102&ID=192254&star=234', S);
memo1.Text:=strmsg;
finally
idHTTP1.Free;
end;}
end;



//http://www.cityin.cn/bbs/dispbbs.asp?boardID=102&ID=192254&star=234


end.

以上是我试写的,但HTML没看明白,硬是没成功啊,谁帮解决一下谢谢了,我每天上来一次的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部