⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 用于模拟GETPOST方法发送HTTP请求并取得数据.rar
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,winsock,ComCtrls, ExtCtrls,untHttpHeaderObj, Menus ,
  untDataTransmit;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    GroupBox1: TGroupBox;
    Button1: TButton;
    edtServerIP: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    edtServerPort: TEdit;
    UpDown1: TUpDown;
    radMethodGet: TRadioButton;
    radMethodPost: TRadioButton;
    edtServerPage: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    edtRequestMemo: TEdit;
    Label5: TLabel;
    edtSessionID: TEdit;
    Panel1: TPanel;
    Memo3: TMemo;
    Memo4: TMemo;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Memo5: TMemo;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    myDataHeader:TMyHttpHeaderObj;
    CookieVal:TStringList;
    dataHttpHeader:String;
    dataHttpContent:String;
    thd:TDataTransmit;
    procedure parseHeaderData(hData:String);
    procedure ThreadDone(Sender: TObject);
    { Private declarations }
  public
    RecvData:String;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses StrUtils, untHttpConnection;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := false;
  Timer1.Enabled := true;
  GroupBox1.Enabled := false;
  if radMethodGet.Checked then
  begin
    thd := TDataTransmit.Create(edtServerIP.Text,StrToInt(edtServerPort.Text),
                                 edtServerPage.Text,myDataHeader.CookieValue,RecvData);
    thd.OnTerminate := ThreadDone;
  end
  else if radMethodPost.Checked then
  begin
    thd := TDataTransmit.Create(edtServerIP.Text,StrToInt(edtServerPort.Text),
                                 edtServerPage.Text,myDataHeader.CookieValue,RecvData,PostMethod,edtRequestMemo.Text);
    thd.OnTerminate := ThreadDone;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  CookieVal := TStringList.Create;
  myDataHeader := TMyHttpHeaderObj.Create;
end;

procedure TForm1.parseHeaderData(hData: String);
var
  i:integer;
begin
  //将报文头与内容进行分离
  i := pos(#13#10#13#10,hData);
  if i>0 then
  begin
    dataHttpHeader := Copy(hData,1,i);
    dataHttpContent := Copy(hData,i+4,Length(hData)-i+4+1);
  end
  else begin
    dataHttpHeader := '';
    dataHttpContent := '';
  end;

  //对报文头内容进行简单解析
  myDataHeader.ParseHeaderData(hData);
  if myDataHeader.CookieVal<>'' then
    CookieVal.Text := myDataHeader.CookieVal;


  Memo3.Text := dataHttpHeader;
  Memo4.Text := dataHttpContent;
  memo5.Text := myDataHeader.CookieValue.Text;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  CookieVal.Free;
  myDataHeader.Free;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
  Panel1.Visible:=true;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
  Panel1.Visible:=false;
end;

procedure TForm1.ThreadDone(Sender: TObject);
begin
  Timer1.Enabled := false;
  Button1.Enabled := true;
  GroupBox1.Enabled := true;
  Memo1.Text :=RecvData;
  parseHeaderData(RecvData);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Memo1.Text := '连接已超时!';
  Timer1.Enabled := false;
  Button1.Enabled := true;
  GroupBox1.Enabled := true;
  If thd<>nil then
  begin
    thd.Terminate;
  end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -