idhttp中对于post方法的定义

idhttp中对于post方法的定义:

[delphi]  view plain copy print ?
  1. function Post(AURL: string; ASource: TIdStrings): string; overload;  
  2. function Post(AURL: string; ASource: TStream): string; overload;  
  3. function Post(AURL: string; ASource: TIdMultiPartFormDataStream): string; overload;  
  4. procedure Post(AURL: string; ASource: TIdMultiPartFormDataStream; AResponseContent: TStream); overload;  
  5. procedure Post(AURL: string; ASource: TIdStrings; AResponseContent: TStream); overload;  
  6. procedure Post(AURL: string; ASource, AResponseContent: TStream); overload;  

其中的基本方法是下面的过程类方法,其他post重载方法均为嵌套使用此方法:

[delphi]  view plain copy print ?
  1. procedure TIdCustomHTTP.Post(AURL: string; ASource, AResponseContent: TStream);  

参数:
[delphi]  view plain copy print ?
  1. AURL: string    // post请求URL   
  2. ASource: TIdMultiPartFormDataStream     // TStream派生的类,其中为发送的流数据及mime信息,可用于上传文件   
  3. ASource: TStream    // 发送的流数据   
  4. AResponseContent: TStream // 响应内容流ASource: TIdStrings // TString派生的类,用于向服务器提交数据  

ASource 为TIdStrings的数据,使用的MIME是默认的“application/x-www-form-urlencoded”,而TIdMultiFormDataStream则是根据发送的内容/文件来设定MIME类型。

示例:

[delphi]  view plain copy print ?
  1. unit Umain;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,  
  8.   IdHTTP, StdCtrls, IdMultipartFormData;  
  9.   
  10. type  
  11.   TForm1 = class(TForm)  
  12.     IdHTTP1: TIdHTTP;  
  13.     Memo1: TMemo;  
  14.     btnOne: TButton;  
  15.     btnTwo: TButton;  
  16.     btnThree: TButton;  
  17.     btnFour: TButton;  
  18.     btnFive: TButton;  
  19.     btnSix: TButton;  
  20.     procedure btnOneClick(Sender: TObject);  
  21.     procedure btnTwoClick(Sender: TObject);  
  22.     procedure btnThreeClick(Sender: TObject);  
  23.     procedure btnFourClick(Sender: TObject);  
  24.     procedure btnFiveClick(Sender: TObject);  
  25.     procedure btnSixClick(Sender: TObject);  
  26.   private  
  27.     { Private declarations }  
  28.   public  
  29.     { Public declarations }  
  30.   end;  
  31.   
  32. var  
  33.   Form1: TForm1;  
  34.   
  35. implementation  
  36.   
  37. {$R *.dfm}  
  38.   
  39. const  
  40.   sPostUrl = 'http://cne.csu.edu.cn/reg/mima-pass.asp?path=';  
  41.   
  42. procedure TForm1.btnOneClick(Sender: TObject);  
  43. var  
  44.   postcmd : TStringList;  
  45. begin  
  46.   postcmd := TStringList.Create;  // 组合参数列表   
  47.   postcmd.Add('AutoGet=1');  
  48.   postcmd.Add('Logintype=0');  
  49.   postcmd.Add('password=test');  
  50.   postcmd.Add('username=test');  
  51.   Memo1.Text := IdHTTP1.Post(sPostUrl, postcmd);  // 以post的方式发送到服务器   
  52. end;  
  53.   
  54. procedure TForm1.btnTwoClick(Sender: TObject);  
  55. var  
  56.   postStream : TStringStream;  
  57. begin  
  58.   IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; // 定义发送mime类型   
  59.   postStream := TStringStream.Create('AutoGet=1&Logintype=0&password=test&username=test');  // 发送内容   
  60.   Memo1.Text := IdHTTP1.Post(sPostUrl, postStream);  
  61. end;  
  62.   
  63. procedure TForm1.btnThreeClick(Sender: TObject);  
  64. var  
  65.   postStream : TIdMultiPartFormDataStream;  
  66. begin  
  67.   IdHTTP1.HandleRedirects := true;  // 允许重定向,因为这个站点会发生重定向   
  68.   IdHTTP1.Request.Referer := 'http://www.qiuziti.com/'; // 设置来路,此网站要求  
  69.   
  70.   postStream := TIdMultiPartFormDataStream.Create;  // 创建TIdMultiPartFormDataStream类   
  71.   
  72.   postStream.AddFormField('textfield', 'd:\temp\test.png'); // 表单参数   
  73.   postStream.AddFile('uploaded_file', 'd:\temp\test.png', 'image/png'); // 表单文件   
  74.   Memo1.Text := Utf8ToAnsi(IdHTTP1.Post('http://www.qiuziti.com/s/upload.ashx', postStream));  
  75. end;  
  76.   
  77. procedure TForm1.btnFourClick(Sender: TObject);  
  78. var  
  79.   postStream : TIdMultiPartFormDataStream;  
  80.   respStream : TStringStream;  
  81. begin  
  82.   IdHTTP1.HandleRedirects := true;  // 允许重定向,因为这个站点会发生重定向   
  83.   IdHTTP1.Request.Referer := 'http://www.qiuziti.com/'; // 设置来路,此网站要求  
  84.   
  85.   postStream := TIdMultiPartFormDataStream.Create;  // 创建TIdMultiPartFormDataStream类   
  86.   respStream := TStringStream.Create('');  
  87.   
  88.   postStream.AddFormField('textfield', 'd:\temp\test.png'); // 表单参数   
  89.   postStream.AddFile('uploaded_file', 'd:\temp\test.png', 'image/png'); // 表单文件   
  90.   
  91.   IdHTTP1.Post('http://www.qiuziti.com/s/upload.ashx', postStream, respStream);  
  92.   
  93.   Memo1.Text := Utf8ToAnsi(respStream.DataString);  
  94. end;  
  95.   
  96. procedure TForm1.btnFiveClick(Sender: TObject);  
  97. var  
  98.   respStream : TStringStream;  
  99.   postcmd : TStringList;  
  100. begin  
  101.   postcmd := TStringList.Create;  
  102.   respStream := TStringStream.Create('');  
  103.   
  104.   postcmd.Add('AutoGet=1');  
  105.   postcmd.Add('Logintype=0');  
  106.   postcmd.Add('password=test');  
  107.   postcmd.Add('username=test');  
  108.   
  109.   IdHTTP1.Post(sPostUrl, postcmd, respStream);  
  110.   
  111.   Memo1.Text := respStream.DataString;  
  112. end;  
  113.   
  114. procedure TForm1.btnSixClick(Sender: TObject);  
  115. var  
  116.   postStream, respStream : TStringStream;  
  117. begin  
  118.   postStream := TStringStream.Create('AutoGet=1&Logintype=0&password=test&username=test');  
  119.   respStream := TStringStream.Create('');  
  120.   IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; // 定义发送mime类型   
  121.   IdHTTP1.Post(sPostUrl, postStream, respStream);  
  122.   
  123.   Memo1.Text := respStream.DataString;  
  124. end;  
  125.   
  126. end.  

Demo下载:

http://download.csdn.net/detail/none01/5130108

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值