INDY 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重载方法均为嵌套使用此方法:

[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.

 

你可能感兴趣的:(http)