当前位置:首页 > Windows程序 > 正文

[delphi]indy idhttp post方法

2021-03-27 Windows程序

idhttp中对于post方法的定义:

[delphi] 

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] 

procedure TIdCustomHTTP.Post(AURL: string; ASource, AResponseContent: TStream);  


参数:

[delphi] 

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] 

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 = ‘?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 := ‘‘; // 设置来路,此网站要求  

  

  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(‘‘, postStream));  

end;  

  

procedure TForm1.btnFourClick(Sender: TObject);  

var  

  postStream : TIdMultiPartFormDataStream;  

  respStream : TStringStream;  

begin  

  IdHTTP1.HandleRedirects := true;  // 允许重定向,因为这个站点会发生重定向   

  IdHTTP1.Request.Referer := ‘‘; // 设置来路,此网站要求  

  

  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(‘‘, 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;  

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68560.html