软件登录软件 DIY

原创 2003年09月23日 01:29:00

                                      软件登录软件 DIY 
    Http 协议是 Web 服务的主要协议之一,网页的浏览和网站动态数据的提交就是由这个协议实现的。实现的过程是通过 Http 会话,向 Web 服务器进行数据请求(读取、存储等)。
    我们编程中常用的有 POST 和 GET 数据请求。POST 可以用于把用户输入的数据以数据流的方式传给 CGI(ASP、JSP) 程序,CGI 再通过 Contect-Length 环境变量来取相应长度的数据流信息。如果数据提交成功,服务器将产生正常应答,其头部信息为:
  HTTP/1.1 200 OK
    网站登录是通过用户填写登录信息,由 CGI 程序向 Web 服务器提交来实现的。以 Sohu 网站的免费网站提交为例:首先由 Sohu 主页面进入网站登录界面,选择网站的登录类别,然后填写网站的信息:这个过程由 2 步组成,第一步填写网站的名称和网站地址(http://…),第二步填写一些详细信息,然后就可以提交了。真正实现数据保存的是第二步,其核心网页代码(简化)为:
    <form name="form1" method="POST"
        action="/regurl/regform.asp?Step=Create&Class=C016015005002
        &sitename=网站名称&url=http://网站地址"
        onsubmit="return checkform()">
      <input type="hidden" name="Step" value="Create">
      网站描述:
      <textarea name="Description" rows="2" cols="60"></textarea>
      ……
    </form>
    (注:C016015005002 因选择的网站类别而不同)
    我们的程序就是通过利用经过 Delphi 完美封装的 TNMHttp 组件,模拟网页中的按钮 Submit 提交,来实现用程序代码进行网站的快速、准确注册。
    本例中,笔者的程序可以圆满的完成网站“十万个为什么”(http://helps100000.yeah.net)的登录,登录在“首页>公司企业>计算机与互联网>计算机软件>数据库”类目下。程序的界面组件为:1 个 WebBrowser 组件,3 个 Memo 组件,分别用来显示登录后的反馈页面和一些提示信息。1 个 NMHTTP1 组件,是本程序的核心组件。还有一个 Button 按钮。
    其实程序的核心代码也就一句:
      NMHTTP1.Post('http://db.sohu.com/regurl/regform.asp?
        Step=Create&Class=C016015005002&sitename=十万个为什么
        &url=http://helps1000000.yeah.net','PostData.txt');
    其中,Post 方法有 2 个参数,第 1 个参数代表 form 表单的 action 部分,第 2 个参数是 <input> 标签中各参数的取值组成的字符串。由于 NMHTTP1 的 OutputFileMode 属性被设置为 true,所以第 2 个参数的字符串被放在一个外部文本文件 PostData.txt 中,PostData.txt 的内容为(不分行):
    Description=探讨计算机技术收集应用技巧&Keywords=计算机技巧
    &district=山系&city=西安&Contact=张庆&EMail=zhangking@263.net&memo=no
该字符串是通过分析网页代码得到的。
    程序运行后,点击“网站注册”按钮,如果机器已经连接到 Internet 上,就会像在网页中进行网站注册一样,很快在 WebBrowser1 中返回“注册成功”或“错误:该网站已经注册”页面。
    本程序在 Windows98、IE5.0、Delphi5.0 环境下调式成功。我们完全可以在此基础上,运用多线程等技术,做成一个类似“登录骑兵”一类的实用软件。
//程序的完整源代码如下:
  unit Unit1;
  interface
  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, OleCtrls, SHDocVw, Psock, NMHttp, ExtCtrls;
  type
  TForm1 = class(TForm)
  NMHTTP1: TNMHTTP;
  Panel1: TPanel;
  Button1: TButton;
  Memo3: TMemo;
  Memo2: TMemo;
  Memo1: TMemo;
  Panel2: TPanel;
  WebBrowser1: TWebBrowser;
  procedure Button1Click(Sender: TObject);
  procedure NMHTTP1Success(Cmd: CmdType);
  procedure NMHTTP1Failure(Cmd: CmdType);
  procedure FormCreate(Sender: TObject);
  private { Private declarations }
  public { Public declarations }
  end;
  var
  Form1: TForm1;
  implementation
  {$R *.DFM}
  procedure TForm1.FormCreate(Sender: TObject);
  begin
  WebBrowser1.Navigate('about:blank');
  end;

  procedure TForm1.Button1Click(Sender: TObject);
  begin
  With NMHTTP1 do
  Begin
  InputFileMode :=False;
  OutputFileMode :=True;
  ReportLevel :=Status_Basic;
  end;
  With NMHTTP1.HeaderInfo do
  begin
  Cookie :='';
  LocalMailAddress :='';
  LocalProgram :='';
  Referer :='';
  UserID :='';
  Password :='';
  try
  NMHTTP1.Post('http://db.sohu.com/regurl/regform.asp?
  Step=Create&Class=C016015005002&sitename=十万个为什么
  &url=http://helps1000000.yeah.net','PostData.txt');
  except
  showMessage(' Error! ');
  end;
  End;
  end;

  procedure TForm1.NMHTTP1Success(Cmd: CmdType);
  begin
  Case Cmd of
  CmdPOST:
  begin
  Memo1.Text := NMHTTP1.Header;
  Memo2.Text := NMHTTP1.Body;
  WebBrowser1.OleObject.document.body.innerHTML :=NMHTTP1.Body;
  Memo3.Lines.Add('HTTP POST Successful');
  end;
  end;
  end;

  procedure TForm1.NMHTTP1Failure(Cmd: CmdType);
  begin
  Memo1.Text := NMHTTP1.Header;
  Memo2.Text := NMHTTP1.Body;
  case Cmd of
  CmdPOST:
  Memo3.Lines.Add('HTTP Post Failed');
  end;
  end;
  end.
    ------------------------------------------------
    张庆(西安 Net-e 软件系统工程公司)
    Email: zhangking@263.net
    http://soft.why100000.com

软件测试面试题一:如何测试网页的登录页面

界面测试(UI Test) 界面设计风格是否与UI设计一致界面中的文字简洁易懂,没有错别字,个别文字字体颜色   功能测试(Function test) 输入正确的用户名和密码,点击【登录】,验...
  • yoyo_sunny
  • yoyo_sunny
  • 2015年03月02日 15:06
  • 2279

5款免费Windows远程连接Linux桌面软件(VNC客户端)

第一、VNC Viewer(http://www.laozuo.org/1382.html) 这款VNC Viewer老左之前有介绍过"VNC Viewer远程连接Windows VPS...
  • wangzhen209
  • wangzhen209
  • 2015年08月19日 18:00
  • 3918

linux远程登录管理工具

方式一: Putty是一款远程登录工具,用它可以非常方便的登录到Linux服务器上进行各种操作(命令行方式)。Putty完全免费,而且无需安装(双击即可运行),支持多种连接类型(Telnet、SSH...
  • u011203602
  • u011203602
  • 2015年08月26日 16:55
  • 1963

无需编程,DIY自己智能小车的Android蓝牙遥控软件(二)

Block Editor里面各类模块代表的意义: 现在该考虑一下我们的Android软件要怎么运行,列出来需要哪些控件。 向前按钮、向后按钮、向左、向右、………,哦,不要这样吧...
  • tidavery
  • tidavery
  • 2012年09月04日 20:13
  • 15490

无需编程,DIY自己智能小车的Android蓝牙遥控软件(二)

Block Editor里面各类模块代表的意义: 现在该考虑一下我们的Android软件要怎么运行,列出来需要哪些控件。 向前按钮、向后按钮、向左、向右...
  • zgc261
  • zgc261
  • 2014年04月06日 22:57
  • 2514

DIY:用开源软件搭建自己的物联网

原文链接:DIY : Open Source Software for your very own IoT  作者:Vishal Shah  翻译:赵屹华 审校:刘翔宇 图片来源...
  • imxiangzi
  • imxiangzi
  • 2016年05月17日 17:56
  • 8226

为Source insight加入自已编写make代理编译软件DIY超级IDE开发平台

使用MakeAgent + Source insight搭建跨系统IDE开发平台      Source insight是一个功能很强大的源码浏览,编辑软件。相信很多研究过linux内核源码的人...
  • hpwzd
  • hpwzd
  • 2012年11月02日 00:22
  • 2824

无需编程,DIY自己智能小车的Android蓝牙遥控软件(一)

很多热衷于玩单片机小车、机器人的童靴,往往也向往着有天能自己编写一个Android手机的遥控程序,通过自己的手机遥控小车,单片机程序用C语言或者汇编什么的都可以容易完成,,无奈要写一个上位机的Andr...
  • zgc261
  • zgc261
  • 2014年04月06日 22:56
  • 4164

无需编程,DIY自己智能小车的Android蓝牙遥控软件(三)

可以用手机自测一下,这用我们只用Roll 和Pitch两个数据,当手机平置时,它们接近于0,当手机前翻或侧翻时,两个值分别在±90之间变化。利用这两个数据便可搭建传送蓝牙指令的程序了。 4、 ...
  • zgc261
  • zgc261
  • 2014年04月06日 22:58
  • 2348

无需编程,DIY自己智能小车的Android蓝牙遥控软件(一)

http://blog.csdn.net/tidavery/article/details/7943576    很多热衷于玩单片机小车、机器人的童靴,往往也向往着有天能自己编写一个Andr...
  • Skypine_Lee
  • Skypine_Lee
  • 2012年09月16日 10:30
  • 1247
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件登录软件 DIY
举报原因:
原因补充:

(最多只允许输入30个字)