INDY idhttp Post用法

http://www.cnblogs.com/tk-del/archive/2013/05/10/3071541.html

 

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重载方法均为嵌套使用此方法:
[delphi] view plaincopyprint?
procedure TIdCustomHTTP.Post(AURL: string; ASource, AResponseContent: TStream);  
 
参数:
[delphi] view plaincopyprint?
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类型。
示例:
[delphi] view plaincopyprint?
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.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值