idhttp如何读取asp文件中的SESSION和Cookie值呀??? 我把问题说清楚点:就是我要用idhttp登陆一个网站的会员管理,如何输入的用户名密码正确,就读取这个ASP文件中的指定的SESSION或COOKIE值.(特别声明:不是读取返回的html页面代码,是返回session和cookie值!) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 session只有在webserver端才可以读到 http://blog.csdn.net/hnxyy/archive/2004/06/29/29385.aspx使用Indy9+D7实现CSDN论坛的登录,回复,发贴,发短信功能 代码片断:const LoginUrl='http://www.csdn.net/member/logon.asp'; PostUrl='http://community.csdn.net/Expert/PostNew_SQL.asp'; ReplyUrl='http://community.csdn.net/Expert/reply.asp'; MsgUrl='http://community.csdn.net/message_board/postsend.asp';MyCookList:全局变量,取得当前用户的CookieIdHTTP1: TIdHTTP;登录:function Logon(UserName, PassWord, CookieTime: string):boolean;var LoginInfo: TStrings; Response: TStringStream; i: Integer; Cookie:string;begin Result :=False; Cookie:=''; MyCookList :=''; Response := TStringStream.Create(''); LoginInfo := TStringList.Create; try LoginInfo.Clear; LoginInfo.Add('login_name='+UserName); LoginInfo.Add('password='+PassWord); LoginInfo.Add('from=http://community.csdn.net/Expert/Forum.asp'); LoginInfo.Add('cookietime='+CookieTime); LoginInfo.Add('x=0'); LoginInfo.Add('y=0'); IdHTTP1.Request.Referer:='http://www.csdn.net/member/logon.asp'; IdHTTP1.Request.From :='http://community.csdn.net/Expert/Forum.asp'; try IdHTTP1.Post(LoginUrl,LoginInfo,Response); except showmessage('登陆失败'); end; showmessage(Response.DataString); //从返回的页面中找出cookie for i :=0 to IdHTTP1.Response.RawHeaders.Count-1 do begin if UpperCase(Copy(IdHTTP1.Response.RawHeaders[i],1,10)) = 'SET-COOKIE' then begin Cookie :=Trim(Copy(IdHTTP1.Response.RawHeaders[i],12,MAXINT)); Cookie :=Copy(Cookie,1,Pos(';',Cookie)); MyCookList :=MyCookList+Cookie; // showmessage(Cookie); end; end; IdHTTP1.Request.RawHeaders.Add('Cookie: '+MyCookList); finally LoginInfo.Free; Response.Free; end; if length(MyCookList)>200 then result:=True;end;//回复function Reply(TopicID, Content: string): boolean;var ReplyInfo: TStrings; Response: TStringStream;begin Result :=False; ReplyInfo := TStringList.Create; Response :=TStringStream.Create(''); try begin //取回复页面 ReplyInfo.Clear; ReplyInfo.Add('Topicid='+TopicID); ReplyInfo.Add('xmlReply=aaaaa'); ReplyInfo.Add('csdnname='); ReplyInfo.Add('csdnpassword='); ReplyInfo.Add('ReplyContent='+Content); IdHTTP1.Request.CustomHeaders.Add('Cookie: '+copy(MyCookList,1,length(MyCookList)-1)); IdHTTP1.Request.Referer :='http://community.csdn.net/Expert/xsl/Reply_Xml.asp Topicid='+TopicID; IdHTTP1.Request.UserAgent:='Redhat/9.0'; try IdHTTP1.Post(ReplyUrl,ReplyInfo,Response); except showmessage('回复失败'); exit; end; // showmessage(Response.DataString); if pos('添加完成,正在生成静态页面,请稍候',Response.DataString)>0 then Result :=true; end; finally ReplyInfo.Free; Response.Free; end;end;//发贴function PostNew(RoomID, Point, TopicName, Content: string): boolean;var PostInfo: TStrings; Response: TStringStream;begin Result :=False; PostInfo := TStringList.Create; Response :=TStringStream.Create(''); try begin //取发贴页面 //typestate=1&Point=20&TopicName=test&Room=1404&Content=111222 PostInfo.Clear; PostInfo.Add('typestate=1'); PostInfo.Add('Point='+Point); PostInfo.Add('TopicName='+TopicName); PostInfo.Add('Room='+RoomID); PostInfo.Add('Content='+Content); IdHTTP1.Request.CustomHeaders.Add('Cookie: '+copy(MyCookList,1,length(MyCookList)-1)); IdHTTP1.Request.CacheControl:='no-cache'; IdHTTP1.Request.UserAgent:='Windows Advanced Server/5.0'; try IdHTTP1.Post(PostUrl,PostInfo,Response); except showmessage('发帖失败'); exit; end; // showmessage(Response.DataString); if pos('增加成功,请稍候,正在生成静态页面',Response.DataString)>0 then Result :=true; end; finally PostInfo.Free; Response.Free; end;end;//发短信function SendMsg(SendTo, Content: string): boolean;var PostInfo: TStrings; Response: TStringStream;begin Result :=False; PostInfo := TStringList.Create; Response :=TStringStream.Create(''); try begin PostInfo.Clear; PostInfo.Add('Sendto='+SendTo); PostInfo.Add('Content='+Content); IdHTTP1.Request.CustomHeaders.Add('Cookie: '+copy(MyCookList,1,length(MyCookList)-1)); try IdHTTP1.Post(MsgUrl,PostInfo,Response); except showmessage('发送失败'); exit; end; // showmessage(Response.DataString); if pos('发送成功',Response.DataString)>0 then Result :=true; end; finally PostInfo.Free; Response.Free; end;end; 创建窗体内存错误~~求解 请教各位大虾,teeScrollBar的使用方法! 拖放在窗体上的组件在FormCreate被创建 如果创建失败我怎么捕获? 关于treeview组件的菜鸟问题 关于Web service 求从数据库读取图片的例子! 从今天开始不泡分了!!!!散分!!!! Delphi/VC++ 外挂制作教程 如果有两个MID的子窗口,我想在打开其中一个子窗口的同时,关掉另一个子窗口,怎么作呀 新人求教﹗﹗﹗ 请问如何利用f1book把数据从excel中导入到sqlserver中!比较着急,谢谢了,分不够可以再加!! 急,求教一个cxGrid数据提交速度的问题
使用Indy9+D7实现CSDN论坛的登录,回复,发贴,发短信功能
代码片断:const
LoginUrl='http://www.csdn.net/member/logon.asp';
PostUrl='http://community.csdn.net/Expert/PostNew_SQL.asp';
ReplyUrl='http://community.csdn.net/Expert/reply.asp';
MsgUrl='http://community.csdn.net/message_board/postsend.asp';MyCookList:全局变量,取得当前用户的Cookie
IdHTTP1: TIdHTTP;登录:
function Logon(UserName, PassWord, CookieTime: string):boolean;
var
LoginInfo: TStrings;
Response: TStringStream;
i: Integer;
Cookie:string;
begin
Result :=False;
Cookie:='';
MyCookList :='';
Response := TStringStream.Create('');
LoginInfo := TStringList.Create;
try
LoginInfo.Clear;
LoginInfo.Add('login_name='+UserName);
LoginInfo.Add('password='+PassWord);
LoginInfo.Add('from=http://community.csdn.net/Expert/Forum.asp');
LoginInfo.Add('cookietime='+CookieTime);
LoginInfo.Add('x=0');
LoginInfo.Add('y=0');
IdHTTP1.Request.Referer:='http://www.csdn.net/member/logon.asp';
IdHTTP1.Request.From :='http://community.csdn.net/Expert/Forum.asp';
try
IdHTTP1.Post(LoginUrl,LoginInfo,Response);
except
showmessage('登陆失败');
end;
showmessage(Response.DataString);
//从返回的页面中找出cookie
for i :=0 to IdHTTP1.Response.RawHeaders.Count-1 do
begin
if UpperCase(Copy(IdHTTP1.Response.RawHeaders[i],1,10)) = 'SET-COOKIE' then
begin
Cookie :=Trim(Copy(IdHTTP1.Response.RawHeaders[i],12,MAXINT));
Cookie :=Copy(Cookie,1,Pos(';',Cookie));
MyCookList :=MyCookList+Cookie;
// showmessage(Cookie);
end;
end;
IdHTTP1.Request.RawHeaders.Add('Cookie: '+MyCookList);
finally
LoginInfo.Free;
Response.Free;
end;
if length(MyCookList)>200 then
result:=True;
end;//回复
function Reply(TopicID, Content: string): boolean;
var
ReplyInfo: TStrings;
Response: TStringStream;
begin
Result :=False;
ReplyInfo := TStringList.Create;
Response :=TStringStream.Create('');
try
begin
//取回复页面
ReplyInfo.Clear;
ReplyInfo.Add('Topicid='+TopicID);
ReplyInfo.Add('xmlReply=aaaaa');
ReplyInfo.Add('csdnname=');
ReplyInfo.Add('csdnpassword=');
ReplyInfo.Add('ReplyContent='+Content); IdHTTP1.Request.CustomHeaders.Add('Cookie: '+copy(MyCookList,1,length(MyCookList)-1));
IdHTTP1.Request.Referer :='http://community.csdn.net/Expert/xsl/Reply_Xml.asp Topicid='+TopicID;
IdHTTP1.Request.UserAgent:='Redhat/9.0';
try
IdHTTP1.Post(ReplyUrl,ReplyInfo,Response);
except
showmessage('回复失败');
exit;
end;
// showmessage(Response.DataString);
if pos('添加完成,正在生成静态页面,请稍候',Response.DataString)>0 then
Result :=true;
end;
finally
ReplyInfo.Free;
Response.Free;
end;
end;//发贴
function PostNew(RoomID, Point, TopicName,
Content: string): boolean;
var
PostInfo: TStrings;
Response: TStringStream;
begin
Result :=False;
PostInfo := TStringList.Create;
Response :=TStringStream.Create('');
try
begin
//取发贴页面
//typestate=1&Point=20&TopicName=test&Room=1404&Content=111222
PostInfo.Clear;
PostInfo.Add('typestate=1');
PostInfo.Add('Point='+Point);
PostInfo.Add('TopicName='+TopicName);
PostInfo.Add('Room='+RoomID);
PostInfo.Add('Content='+Content);
IdHTTP1.Request.CustomHeaders.Add('Cookie: '+copy(MyCookList,1,length(MyCookList)-1));
IdHTTP1.Request.CacheControl:='no-cache';
IdHTTP1.Request.UserAgent:='Windows Advanced Server/5.0';
try
IdHTTP1.Post(PostUrl,PostInfo,Response);
except
showmessage('发帖失败');
exit;
end;
// showmessage(Response.DataString);
if pos('增加成功,请稍候,正在生成静态页面',Response.DataString)>0 then
Result :=true;
end;
finally
PostInfo.Free;
Response.Free;
end;
end;//发短信
function SendMsg(SendTo, Content: string): boolean;
var
PostInfo: TStrings;
Response: TStringStream;
begin
Result :=False;
PostInfo := TStringList.Create;
Response :=TStringStream.Create('');
try
begin
PostInfo.Clear;
PostInfo.Add('Sendto='+SendTo);
PostInfo.Add('Content='+Content);
IdHTTP1.Request.CustomHeaders.Add('Cookie: '+copy(MyCookList,1,length(MyCookList)-1));
try
IdHTTP1.Post(MsgUrl,PostInfo,Response);
except
showmessage('发送失败');
exit;
end;
// showmessage(Response.DataString);
if pos('发送成功',Response.DataString)>0 then
Result :=true;
end;
finally
PostInfo.Free;
Response.Free;
end;
end;