使用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;

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值