軟體登入軟體 DIY

來源:互聯網
上載者:User

                                      軟體登入軟體 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.