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:\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用法的更多相关文章
- [delphi]indy idhttp post方法
网易 博客 LOFTCam-用心创造滤镜 LOFTER-最美图片社交APP 送20张免费照片冲印 > 注册登录 加关注 techiepc的博客 万事如意 首页 日志 LOFTER 相册 音乐 ...
- Delphi Indy IDHttp 403 forbidden
http://hbk777.blog.163.com/blog/static/6058086200681594333361/ Delphi Indy IDHttp 403 forbidden 2006 ...
- delphi idhttp 实战用法(TIdhttpEx)
以delphi XE8 自带indy(10.5.8.0)组件为例,分享实战中遇到的问题及解决方法. TIdHttpEx 用法实例01[多线程获取网页](包含完整源码) 实例02(如何Post参数,如何 ...
- 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 ...
- idhttp的用法
1)POST function PostMethod(http: TIDhttp; URL: string; Params: TStringList): string;var RespData: TS ...
- IdHttp 资料
http://blog.csdn.net/delphizhou/article/details/3085704 IdHttp 资料 网上找了些不过很不好找.今天找了些收藏在一起.以便他人查阅, idh ...
- Delphi QC 记录
各网友提交的 QC: 官方网址 说明 备注 https://quality.embarcadero.com/browse/RSP-12985 iOS device cannot use indy id ...
- IDHttp的基本用法(转)
一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...
- Delphi的IDHTTP的基本用法
一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...
随机推荐
- [python]Python操作MySQL
[安装] 安装MySQL 安装MySQL不用多说了,下载下来安装就是,没有特别需要注意的地方. 一个下载地址:点击打开链接 [样例] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...
- JavaScript中,{}+{}等于多少?
最近,Gary Bernhardt 在一个简短的演讲视频“Wat”中指出了一个有趣的 JavaScript 怪癖: 在把对象和数组混合相加时,会得到一些意想不到的结果. 本篇文章会依次讲解这些计算结果 ...
- Linux学习--第二波
虽然安装的centos感觉不能上网,权限也不知道怎么设置. 偶然的机会发现了一个好东西,博客:http://www.cnblogs.com/xiaoluo501395377/tag/CentOS/.有 ...
- 【VC】VC工具栏图标合并工具(非tbcreator和visual toolbar)
VC开发难免会用到toolbar,在没有美工的时候,大部分时间我们只能自己上. 第一个方法:fireworks/photoshop平铺.现在的图片资源大多为背景透明的png图片,虽然fireworks ...
- 轻松学习Linux之理解Shell的硬链接与软连接
大家在学习linux的过程中常常遇到一些模糊且容易混淆的概念比如什么是硬链接和软链接,他们有什么区别? 软连接有点象windows中的快捷方式,连接和目标文件具有相同的节点,而硬连接就好象重新复制 ...
- UltraEdit中文乱码的解决方法
现象问题: 同样的一个文件 UltraEdit 打开是乱码,显示文件的编码是U8-DOS,可是用EditPlus .记事本,打开,就是正常的,编码显示是ANSI. 即使在UltraEdit打开文件的时 ...
- C++11多态函数对象包装器
[C++11多态函数对象包装器] 针对函数对象的多态包装器(又称多态函数对象包装器)在语义和语法上和函数指针相似,但不像函数指针那么狭隘.只要能被调用,且其参数能与包装器兼容的都能以多态函数对象包装器 ...
- VISA资源名称控件
NI-VISA能自动检测端口.通过前面板上的VISA资源名称控件或VISA查找资源函数可查看端口列表.在任何平台上,NI-VISA支持的最大串口数量为256,串口的默认数量取决于操作系统. VISA资 ...
- socket对于大数据的发送和接收
大数据是指大于32K或者64K的数据. 大数据的发送和接收通过TSTREAM对象来进行是非常方便的. 我们把大数据分割成一个个4K大小的小包,然后再依次传输. 一.大数据的发送的类语言描述: 1)创建 ...
- POJ3468 A Simple Problem with Integers(线段树延时标记)
题目地址http://poj.org/problem?id=3468 题目大意很简单,有两个操作,一个 Q a, b 查询区间[a, b]的和 C a, b, c让区间[a, b] 的每一个数+c 第 ...