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.

INDY idhttp Post用法的更多相关文章

  1. [delphi]indy idhttp post方法

    网易 博客 LOFTCam-用心创造滤镜 LOFTER-最美图片社交APP 送20张免费照片冲印 > 注册登录  加关注 techiepc的博客 万事如意 首页 日志 LOFTER 相册 音乐 ...

  2. Delphi Indy IDHttp 403 forbidden

    http://hbk777.blog.163.com/blog/static/6058086200681594333361/ Delphi Indy IDHttp 403 forbidden 2006 ...

  3. delphi idhttp 实战用法(TIdhttpEx)

    以delphi XE8 自带indy(10.5.8.0)组件为例,分享实战中遇到的问题及解决方法. TIdHttpEx 用法实例01[多线程获取网页](包含完整源码) 实例02(如何Post参数,如何 ...

  4. delphi indy Idhttp error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

    在使用 indy 中的 idhttp 组件访问 https 网站时,出现如下错误: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert pr ...

  5. idhttp的用法

    1)POST function PostMethod(http: TIDhttp; URL: string; Params: TStringList): string;var RespData: TS ...

  6. IdHttp 资料

    http://blog.csdn.net/delphizhou/article/details/3085704 IdHttp 资料 网上找了些不过很不好找.今天找了些收藏在一起.以便他人查阅, idh ...

  7. Delphi QC 记录

    各网友提交的 QC: 官方网址 说明 备注 https://quality.embarcadero.com/browse/RSP-12985 iOS device cannot use indy id ...

  8. IDHttp的基本用法(转)

    一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...

  9. Delphi的IDHTTP的基本用法

    一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...

随机推荐

  1. SublimeText3 初探(工欲善其事,必先利其器)

    告别2015,迎来了2016.祝看到这篇博客的兄弟们都猴年发财,人生走上另一个高度. 新年新气象,猴年我会常常来更新自己的博客,希望能接触到更多的园友. sublime text3 和atom 各有各 ...

  2. C语言实现strcpy

    strcpy.h: #ifndef STRCPY_H #define STRCPY_H #include <stdio.h> char *cat_strcpy(char *dst, con ...

  3. 二叉树单色路径最长&amp;&amp;穿珠子

    对树的操作,特别理解递归的好处. //对于一棵由黑白点组成的二叉树,我们需要找到其中最长的单色简单路径,其中简单路径的定义是从树上的某点开始沿树边走不重复的点到树上的 //另一点结束而形成的路径,而路 ...

  4. vs2008编译boost

    vs2008编译boost [一.Boost库的介绍] Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一.Boost库由C++标准委员会库 ...

  5. [翻译]HTML中不知名的语义标签

    原文:http://docs.webplatform.org/wiki/tutorials/Lesser_-_known_semantic_elements HTML5中比较常用的语义元素有heade ...

  6. SQL时间第一期_获取系统年月日时分秒

    select GETDATE() as '当前日期',DateName(year,GetDate()) as '年',DateName(month,GetDate()) as '月',DateName ...

  7. [Cocos2d-JS] 安卓机器的几个按钮

    cc.eventManager.addListener({ event:cc.EventListener.KEYBOARD, onKeyPressed:function(keycode,event){ ...

  8. java应用maven插件动态生成webservice代码

    pom.xml如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  9. Median of Two Sorted Arrays-----LeetCode

    There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...

  10. POJ 2342 Anniversary party (树dp)

    题目链接:http://poj.org/problem?id=2342 有n个人,每个人有活跃值.下面n-1行u和v表示u的上司是v,有直接上司和下属的关系不能同时参加party,问你party最大的 ...