techiepc的博客

万事如意

日志

 
 
 

[delphi]indy idhttp post方法

2013-10-13 10:49:40|  分类: 默认分类 |  标签:delphi  idhttp  post  indy  |举报|字号 订阅

 
 

idhttp中对于post方法的定义:

  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重载方法均为嵌套使用此方法:

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

参数:

  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类型。

示例:

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

Demo下载:

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

 
 
 
 
阅读(1547)| 评论(0)

 

 
喜欢推荐转载
 

 

 

 

 

 

 

 

 
 

 

在LOFTER的更多文章

关闭

玩LOFTER,免费冲印20张照片,人人有奖!     我要抢>

评论

  该内容仅供欣赏。
 

网易公司版权所有 ©1997-2015

 
 
 
 
加入网易博客注册

[delphi]indy idhttp post方法的更多相关文章

  1. Delphi Indy IDHttp 403 forbidden

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

  2. 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 ...

  3. Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息

    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...

  4. Delphi的移动文件方法(转)/删除文件:/文件的复制

    RenameFile,DeleteFile,MoveFile Delphi的移动文件方法 uses  ShellApi; procedure ShellFileOperation(fromFile: ...

  5. delphi操作文本文件的方法简介

    delphi操作文本文件的方法简介减小字体 增大字体 作者佚名来源不详发布时间2008-5-31 10:31:16发布人xuedelphi1 文件类型和标准过程       Delphi同Object ...

  6. delphi使用IdHTTP模拟提交页面方法总结

    http://blog.csdn.net/lxdcyh/article/details/3986800 1.拖入TIdHTTP控件,HandleRedirect设为True,否则可能会出现HTTP 3 ...

  7. Delphi的idhttp报508 Loop Detected错误的原因

    一般是访问https时才出现“508 Loop Detected”,idhttp+IdSSLIOHandlerSocketOpenSSL,这个在上篇文章中讲过了. 由于该问题网上资料极少,连外文资料也 ...

  8. delphi 用idhttp做web页面数据抓取 注意事项

    这里不讨论webbrowse方式了 .直接采用indy的 idhttp  Get post 可以很方便的获取网页数据. 但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了.这几年也做了不少类似工具 ...

  9. INDY idhttp Post用法

    http://www.cnblogs.com/tk-del/archive/2013/05/10/3071541.html function Post(AURL: string; ASource: T ...

随机推荐

  1. 吴奇隆刘诗诗婚礼场地:巴厘岛Ayana酒店,美到窒息!

    导读:忍不住转载一下,原文地址:http://www.sjq315.com/news/270768.html 3月20日,吴奇隆和刘诗诗在巴厘岛五星级酒店Ayana Resort and Spa酒店举 ...

  2. EntityFramework 优化

    1.分页的时候,尽量在数据库里面去分页. //在数据库中分页 ).Take().ToList(); //先把数据从数据库中查出来,然后才分页 ).Take(); 2.尽量禁用延迟加载,尽量使用预加载和 ...

  3. wgsim说明

    介绍 ============ Wgsim是从参照基因组中模拟序列的小工具. 它能够模拟二倍体基因组与SNP和插入/缺失(INDEL) 多态性,并能够模拟均匀替代测序错误的reads. 它不产生IND ...

  4. cache manifest 格式

    下面说明书写 cache manifest 文件需要遵循的格式.1 首行必须是 CACHE MANIFEST.2 其后,每一行列出一个需要缓存的资源文件名.3 可根据需要列出在线访问的白名单.白名单中 ...

  5. AFNetworking3.0 Https P12证书

    最近服务器由原来的ice中间件改为https.方便了和服务器交互时不用自己aes加密了. -之前服务器人员和我(IOS)都没有使用过https,所以https跑不通很难说是服务器没有配置好还是IOS这 ...

  6. [BZOJ 2819]Nim

    最近都忙的没空写题解了喵- 看到 1= 终于是保住了也算是一个小小的安慰吧 555…… 湖北省队互测题,据说会爆栈,但 Linux 下 栈空间=内存=128M 真的吃不下? 反正我是写了个人工栈- 这 ...

  7. Python爬虫库Scrapy入门1--爬取当当网商品数据

    1.关于scrapy库的介绍,可以查看其官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/ 2.安装:pip install scrapy  注意这 ...

  8. nsq

    官网:http://nsq.io (1)描述 都是message broker,rabbitmq久经考验,nsq则是后起之秀.rabbitmq是erlang编写,nsq是golang. 安装:http ...

  9. jsr133

    1:介绍 java虚拟机支持多线程运行.线程代表的就是Thread class.对用户来说创建线程的唯一办法就是创建一个Thread对象:每一个线程都和一个Thread对象关联.Thread对象调用s ...

  10. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...