如何用编程实现在他人的留言本留言?(留言本使用ASP编成) (200分)

  • 主题发起人 主题发起人 vfrog
  • 开始时间 开始时间
V

vfrog

Unregistered / Unconfirmed
GUEST, unregistred user!
利用delphi的 NMhttp 的 post 方式可以直接在很多论坛和留言本中发表文章,但有些
论坛或留言板采用了一些特殊的验证手段,导致无法用此方法实现留言。例如中国学生
网的BBS就是如此。
请各位大侠指教,如何使用程序实现直接留言!!最好有具体的代码。

可供编程试验的留言板:http://bbs.6to23.com/1/default.asp?name=syjd。
 
建议采用最新的indy9.0(以上),
上面的idHttp和idCookieManager一起配合使用,
可以很好的解决cookie问题,我曾经使用这两个
组件实现了通过Web网站发送短消息的程序,也
通过它们实现了对网易信箱等的访问。没有出现
很大的问题,你可以试试看!
 
能否将其中的代码贴一下??我真的非常需要。
或者发送到我的邮箱中,谢谢了。
 
不好意思 今天才收到信上线!
你把信箱给我,我发给你!
下面是简单的介绍:
首先在Form上放idHttp, IdCookieManager,并将两者联系在一起
(通过idHttp的CookieManager),剩下的 你就专心实现你要完成
的东西就可以啦。
不知道你玩过KOK没有,下面的代码是登陆KOK注册页面的部分代码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, IdCookieManager, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

type
TForm1 = class(TForm)
http: TIdHTTP;
CookieMngr: TIdCookieManager;
edtUserName: TLabeledEdit;
edtPassword: TLabeledEdit;
btnLogin: TButton;
Cookies: TMemo;
Memo1: TMemo;
btnInfor: TButton;
Button1: TButton;
edtSN: TLabeledEdit;
procedure btnLoginClick(Sender: TObject);
procedure btnInforClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

//这个函数是登陆页面,
procedure TForm1.btnLoginClick(Sender: TObject);
var
s, s1: TStringStream;
i: Integer;
begin
s := TStringStream.Create('');
s1 := TStringStream.Create('');
try
//{
s.WriteString('action=LOGIN&gameSelect=gkk&');
s.WriteString('acct=' + edtUserName.Text + '&');
s.WriteString('pwd=' + edtPassword.Text);
http.Request.ContentType := 'application/x-www-form-urlencoded';

try
http.Post('http://register.kok.com.cn/billing/servlet/walletServlet', s, s1)
except
http.Get(http.Response.Location, s1);
end;
//}
Memo1.Lines.Text := s1.DataString;
//下面的是显示cookies信息的代码
Cookies.Clear;
for i := 0 to CookieMngr.CookieCollection.Count - 1 do
Cookies.Lines.Add(CookieMngr.CookieCollection.Items.CookieText);
finally
s.Free;
s1.Free;
end;

end;
//这是KOK注册页面中,显示帐户信息的函数
procedure TForm1.btnInforClick(Sender: TObject);
var
s, s1: TStringStream;
i: Integer;
begin
{
<form action=../servlet/walletServlet method=post>
<input type=submit value="修改个人资料">
<input type=hidden name=action value=INFO>
</form>
}

s := TStringStream.Create('');
s1 := TStringStream.Create('');
try
s.WriteString('action=INFO');
http.Request.ContentType := 'application/x-www-form-urlencoded';
try
http.Post('http://register.kok.com.cn/billing/servlet/walletServlet', s, s1)
except
http.Get(http.Response.Location, s1);
end;
Memo1.Lines.Text := s1.DataString;
Cookies.Clear;
for i := 0 to CookieMngr.CookieCollection.Count - 1 do
Cookies.Lines.Add(CookieMngr.CookieCollection.Items.CookieText);
finally
s.Free;
s1.Free;
end;

end;

end.
 
snowtree:你的回复我已经看到了,我曾经试着用过,可惜没有成功。如果可能的话,
能否按照我的实验网址试一试,我不知道什么原因不能用程序实现在留言板中留言的?
 
问题虽然没有最终解决,但有些启发。暂时先结束本问题。如果有朋友能实际解决这个问题,
在指定的网页中实现程序留言,我可以另开帖子予以给分。
 
后退
顶部