zoukankan      html  css  js  c++  java
  • 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:	emp	est.png'); // 表单参数  
      postStream.AddFile('uploaded_file', 'd:	emp	est.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:	emp	est.png'); // 表单参数  
      postStream.AddFile('uploaded_file', 'd:	emp	est.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.
  • 相关阅读:
    Django组件之cookie与session
    广商14级软件工程分数:第五回合
    广商14级软件工程分数:第四回合
    Oracle Flashback和RMAN示例
    广商14级软件工程分数:第三回合
    广商14级软件工程分数:第二回合
    《学习进度条》博客
    广商14级软件工程分数:第一回合
    学生博客列表-广商14级软件工程
    源代码管理的一些问题
  • 原文地址:https://www.cnblogs.com/tc310/p/4917378.html
Copyright © 2011-2022 走看看