idhttp中对于post方法的定义:
- function Post(AURL: string; ASource: TIdStrings): string; overload;
- function Post(AURL: string; ASource: TStream): string; overload;
- function Post(AURL: string; ASource: TIdMultiPartFormDataStream): string; overload;
- procedure Post(AURL: string; ASource: TIdMultiPartFormDataStream; AResponseContent: TStream); overload;
- procedure Post(AURL: string; ASource: TIdStrings; AResponseContent: TStream); overload;
- procedure Post(AURL: string; ASource, AResponseContent: TStream); overload;
其中的基本方法是下面的过程类方法,其他post重载方法均为嵌套使用此方法:
- procedure TIdCustomHTTP.Post(AURL: string; ASource, AResponseContent: TStream);
参数:
- AURL: string // post请求URL
- ASource: TIdMultiPartFormDataStream // TStream派生的类,其中为发送的流数据及mime信息,可用于上传文件
- ASource: TStream // 发送的流数据
- AResponseContent: TStream // 响应内容流ASource: TIdStrings // TString派生的类,用于向服务器提交数据
ASource 为TIdStrings的数据,使用的MIME是默认的“application/x-www-form-urlencoded”,而TIdMultiFormDataStream则是根据发送的内容/文件来设定MIME类型。
示例:
- unit Umain;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
- IdHTTP, StdCtrls, IdMultipartFormData;
-
- type
- TForm1 = class(TForm)
- IdHTTP1: TIdHTTP;
- Memo1: TMemo;
- btnOne: TButton;
- btnTwo: TButton;
- btnThree: TButton;
- btnFour: TButton;
- btnFive: TButton;
- btnSix: TButton;
- procedure btnOneClick(Sender: TObject);
- procedure btnTwoClick(Sender: TObject);
- procedure btnThreeClick(Sender: TObject);
- procedure btnFourClick(Sender: TObject);
- procedure btnFiveClick(Sender: TObject);
- procedure btnSixClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- const
- sPostUrl = ‘http://cne.csu.edu.cn/reg/mima-pass.asp?path=‘;
-
- procedure TForm1.btnOneClick(Sender: TObject);
- var
- postcmd : TStringList;
- begin
- postcmd := TStringList.Create; // 组合参数列表
- postcmd.Add(‘AutoGet=1‘);
- postcmd.Add(‘Logintype=0‘);
- postcmd.Add(‘password=test‘);
- postcmd.Add(‘username=test‘);
- Memo1.Text := IdHTTP1.Post(sPostUrl, postcmd); // 以post的方式发送到服务器
- end;
-
- procedure TForm1.btnTwoClick(Sender: TObject);
- var
- postStream : TStringStream;
- begin
- IdHTTP1.Request.ContentType := ‘application/x-www-form-urlencoded‘; // 定义发送mime类型
- postStream := TStringStream.Create(‘AutoGet=1&Logintype=0&password=test&username=test‘); // 发送内容
- Memo1.Text := IdHTTP1.Post(sPostUrl, postStream);
- end;
-
- procedure TForm1.btnThreeClick(Sender: TObject);
- var
- postStream : TIdMultiPartFormDataStream;
- begin
- IdHTTP1.HandleRedirects := true; // 允许重定向,因为这个站点会发生重定向
- IdHTTP1.Request.Referer := ‘http://www.qiuziti.com/‘; // 设置来路,此网站要求
-
- postStream := TIdMultiPartFormDataStream.Create; // 创建TIdMultiPartFormDataStream类
-
- postStream.AddFormField(‘textfield‘, ‘d:\temp\test.png‘); // 表单参数
- postStream.AddFile(‘uploaded_file‘, ‘d:\temp\test.png‘, ‘image/png‘); // 表单文件
- Memo1.Text := Utf8ToAnsi(IdHTTP1.Post(‘http://www.qiuziti.com/s/upload.ashx‘, postStream));
- end;
-
- procedure TForm1.btnFourClick(Sender: TObject);
- var
- postStream : TIdMultiPartFormDataStream;
- respStream : TStringStream;
- begin
- IdHTTP1.HandleRedirects := true; // 允许重定向,因为这个站点会发生重定向
- IdHTTP1.Request.Referer := ‘http://www.qiuziti.com/‘; // 设置来路,此网站要求
-
- postStream := TIdMultiPartFormDataStream.Create; // 创建TIdMultiPartFormDataStream类
- respStream := TStringStream.Create(‘‘);
-
- postStream.AddFormField(‘textfield‘, ‘d:\temp\test.png‘); // 表单参数
- postStream.AddFile(‘uploaded_file‘, ‘d:\temp\test.png‘, ‘image/png‘); // 表单文件
-
- IdHTTP1.Post(‘http://www.qiuziti.com/s/upload.ashx‘, postStream, respStream);
-
- Memo1.Text := Utf8ToAnsi(respStream.DataString);
- end;
-
- procedure TForm1.btnFiveClick(Sender: TObject);
- var
- respStream : TStringStream;
- postcmd : TStringList;
- begin
- postcmd := TStringList.Create;
- respStream := TStringStream.Create(‘‘);
-
- postcmd.Add(‘AutoGet=1‘);
- postcmd.Add(‘Logintype=0‘);
- postcmd.Add(‘password=test‘);
- postcmd.Add(‘username=test‘);
-
- IdHTTP1.Post(sPostUrl, postcmd, respStream);
-
- Memo1.Text := respStream.DataString;
- end;
-
- procedure TForm1.btnSixClick(Sender: TObject);
- var
- postStream, respStream : TStringStream;
- begin
- postStream := TStringStream.Create(‘AutoGet=1&Logintype=0&password=test&username=test‘);
- respStream := TStringStream.Create(‘‘);
- IdHTTP1.Request.ContentType := ‘application/x-www-form-urlencoded‘; // 定义发送mime类型
- IdHTTP1.Post(sPostUrl, postStream, respStream);
-
- Memo1.Text := respStream.DataString;
- end;
-
- end.
Demo下载:
http://download.csdn.net/detail/none01/5130108
评论