2018-09-30 post

unit Unit2;

interface

uses

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,

  IdTCPConnection, IdTCPClient, IdHTTP, Vcl.StdCtrls, IdIOHandler,

  IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;

type

  TForm2 = class(TForm)

    Button1: TButton;

    IdHTTP1: TIdHTTP;

    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;

    procedure Button1Click(Sender: TObject);

    procedure IdSSLIOHandlerSocketOpenSSL1GetPassword(var Password: string);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

var

  IdHttp1: TIdHTTP;

  Url,s,ResponseStr: string;//请求地址

  ResponseStream : TStringStream; //返回信息

  RequestList : TStringList;    //请求信息

  RequestStream : TStringStream;

begin

  //创建IDHTTP控件

  IdHttp1:= TIdHTTP.Create(nil);

  //TStringStream对象用于保存响应信息

  ResponseStream := TStringStream.Create('');

  RequestStream := TStringStream.Create('');

  RequestList := TStringList.Create;

  idhttp1.HandleRedirects:=true;  //这行去掉后,不能正常运行

//idhttp1.Request.ContentType := 'application/x-www-form-urlencoded'; //没这行,会造成流的方式无法提交成功,列表式提交没有影响

url := 'http://www.ewebeditor.net/ewebeditor/admin/login.asp?action=login';

      //以列表的方式提交参数

    RequestList.Add('h=www.ewebeditor.net');

    RequestList.Add('pwd=admin');

    RequestList.Add('usr=admin');

    IdHttp1.Post(url,RequestList,ResponseStream);

  //    RequestStream.WriteString('h=www.ewebeditor.net&pwd=admin&usr=admin');  //以流的方式提交参数

//    IdHttp1.Post(Url,RequestStream,ResponseStream);

      IdHttp1.get('http://www.ewebeditor.net/ewebeditor/admin/default.asp',ResponseStream);

      IdHttp1.get('http://www.ewebeditor.net/ewebeditor/admin/main.asp',ResponseStream);

      IdHttp1.get('http://www.ewebeditor.net/ewebeditor/admin/menu.asp',ResponseStream);

    //获取网页返回的信息

    ResponseStr := ResponseStream.DataString;

    //网页中的存在中文时,需要进行UTF8解码

    s := UTF8Decode(ResponseStr);

    showmessage(s);

    IdHttp1.Free;

    RequestList.Free;

    RequestStream.Free;

    ResponseStream.Free;

{

      http://www.ewebeditor.net/ewebeditor/admin/login.asp  登录名admin 密码admin

      经过火狐浏览器F12抓包,取得POST的网址,和提交的三个参数,就可以了

    }

end;

{如果使用NETHTTPCLIENT组件,那么添加SSL组件问题不存在,用IDHTTP和用NETHTTPCLIENT返回的信息是不同的,用IDHTTP的信息更全面}

end.

.




wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

NETHTTPCLIENT组件




unit Unit2;

interface

uses

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Net.URLClient,

  System.Net.HttpClient, System.Net.HttpClientComponent, Vcl.StdCtrls;

type

  TForm2 = class(TForm)

    Button1: TButton;

    NetHTTPClient1: TNetHTTPClient;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

var

  Url,s,ResponseStr: string;//请求地址

  ResponseStream : TStringStream; //返回信息

  RequestList : TStringList;    //请求信息

  RequestStream : TStringStream;

begin

  //TStringStream对象用于保存响应信息

  ResponseStream := TStringStream.Create('');

  RequestStream  := TStringStream.Create('');

  RequestList := TStringList.Create;

  nethttpclient1.ContentType := 'application/x-www-form-urlencoded'; //没这行,会造成流的方式无法提交成功,列表式提交没有影响

  Url := 'http://www.ewebeditor.net/ewebeditor/admin/login.asp?action=login';

  {  //以列表的方式提交参数

    RequestList.Add('h=www.ewebeditor.net');

  RequestList.Add('pwd=admin');

  RequestList.Add('usr=admin');

    nethttpclient1.Post(url,RequestList,ResponseStream);

  }

  RequestStream.WriteString('h=www.ewebeditor.net&pwd=admin&usr=admin');  //以流的方式提交参数

// RequestStream.Seek(0,tseekorigin.sobeginning);

    RequestStream.position:=0;  //如果使用nethttpclient控件用流的方式提交,那么需要将起始置为0,要启用这一句或上面那一句,列表式提交没影响

      nethttpclient1.Post(Url,RequestStream,ResponseStream);

      nethttpclient1.get('http://www.ewebeditor.net/ewebeditor/admin/default.asp',ResponseStream);

      nethttpclient1.get('http://www.ewebeditor.net/ewebeditor/admin/main.asp',ResponseStream);

      nethttpclient1.get('http://www.ewebeditor.net/ewebeditor/admin/menu.asp',ResponseStream);

    //获取网页返回的信息

    ResponseStr := ResponseStream.DataString;

    //网页中存在中文时,需要进行UTF8解码

    s:= UTF8Decode(ResponseStr);

    showmessage(s);

    nethttpclient1.Free;

    RequestList.Free;

    RequestStream.Free;

    ResponseStream.Free;

{

      http://www.ewebeditor.net/ewebeditor/admin/login.asp  登录名admin 密码admin

      经过火狐浏览器F12抓包,取得POST的网址,和提交的三个参数,就可以了

    }

end;

//如果使用NETHTTPCLIENT组件,那么添加SSL组件问题不存在

end.

你可能感兴趣的:(2018-09-30 post)