[delphi]indy idhttp post方法

网易

博客

LOFTCam-用心创造滤镜

LOFTER-最美图片社交APP

送20张免费照片冲印 >

注册登录

加关注

techiepc的博客

万事如意

日志

关于我

techiepc

加博友   关注他

文章分类

LOFTER精选

注册免费冲印20张照片 >

网易考拉推荐

网易新闻

湖南郴州现"多彩空调墙"

下载网易新闻客户端 >

delphi idhttp 存储cookies的有关问题

收藏一些DELPHI IDHTTP源码

[delphi]indy idhttp post方法

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

下载LOFTER客户端

idhttp中对于post方法的定义:

[delphi] view plaincopyprint?

  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 plaincopyprint?

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

参数:

[delphi] view plaincopyprint?

  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 plaincopyprint?

  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)

喜欢推荐转载

delphi idhttp 存储cookies的有关问题

收藏一些DELPHI IDHTTP源码

在LOFTER的更多文章

关闭

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

评论

该内容仅供欣赏。

博客风格 - 手机博客 - 下载LOFTER APP - 订阅此博客

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

加入网易博客注册

时间: 2024-10-13 12:36:58

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

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

这里不讨论webbrowse方式了 .直接采用indy的 idhttp  Get post 可以很方便的获取网页数据. 但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了.这几年也做了不少类似工具 总结了几点 好记性不如烂笔头. 内存泄露 获取页面文本 少不了用到html解析 具体到delphi 估计采用mshtml htmltotext 方法的不少,这个方案再大数据量时就会内存溢出 导致程序崩溃,而这并不是每个程序员都知道.解决的方案:采用自己的html解析类 这里我要感谢 武稀松(csd

Delphi开发DLL的方法

1.1)FILE—>NEW—>OTHER,选择DLL. 2)FILE-->NEW-->UNIT.然后写代码.在interface 后面加入 function countnum(i:integer):integer;export; 在implementation后面写函数的代码. 3)在DLL的project文件里面的{$R *.res}后面加上exports countnum; 调试成功以后 会生成一个 project1.dll 文件 2.调用DLL的方法:在unit 部分编写代码

Delphi按名字调用方法高级解决方案

Delphi按名字调用方法高级解决方案 博客分类: 编程基础 DelphiJ#ASPDOS数据结构 按名字调用方法似乎一直以来都是大家比较关注的技术,在论坛上有一个经典的答复: type    TProcedure = procedure(Test: string) of object; procedure ExecuteRoutine(Obj: TObject; Name, Param: string);  var    PMethod: TMethod;    AProcedure: TPr

Delphi SetWindowlong 的使用方法及介绍

SetWindowLong函数介绍. SetWindowLong Unicode 函数原型 LONG SetWindowLong(hwnd,nIndex,lNewLong) HWND hwnd; /* handle of window */ int nIndex; /* offset of value to set */ LONG lNewLong; /* new value */ 函数说明 SetWindowLong函数修改给定窗口的一个属性.该函数还在给定窗口的附加窗口内存中 的指定偏移量处

Delphi 类方法和普通方法的区别 .

//类声明  TMyClass = class  public    class procedure MyProc;  //类方式    constructor Create;      //Create 也是类方法  end; var  Form1: TForm1; implementation {$R *.dfm} { TMyClass } constructor TMyClass.Create;begin  inherited;  MyProc;  //内部调用类方法end; class

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

RenameFile,DeleteFile,MoveFile Delphi的移动文件方法 uses  ShellApi; procedure ShellFileOperation(fromFile: string; toFile: string; Flags: Integer);var  shellinfo: TSHFileOpStructA;begin   with shellinfo do   begin    wnd    := Application.Handle;     wFunc

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

http://blog.csdn.net/lxdcyh/article/details/3986800 1.拖入TIdHTTP控件,HandleRedirect设为True,否则可能会出现HTTP 307错误. 2.主要的设置在Request里.2.1 userAgent应该改为Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; CIBA; MAXTHON 2.

Delphi Indy和socket的一些区别

关于INDY--DELPHI的Internet控件集 Delphi 2010 中包含了大量的Indy控件,网上找点资料转到博客下面给大家分享下. 你有没有用DELPHI开发Internet程序?是不是常常会烦恼FastNet组件为什么没有源代码?有很多问题,不看源代码,真不知道是什么问题.是不是也觉得FastNet组件支持的网络协议还不够多?现在不用烦恼了,有一套功能很丰富.使用很方便.开放源代码的免费INTERNET控件集可以解决你的烦恼.这套控件集就是INDY了. 什么是INDY?它有什么功

Delphi的对象注销方法Destroy和free

当您使用完对象后,您应该及时撤销它,以便把这个对象占用的内存释放出来.您可以通过调用一个注销方法来撤销您的对象,它会释放分配给这个对象的内存. Delphi的注销方法有两个:Destroy和Free.Delphi建议使用Free,因为它比Destroy更为安全,同时调用Free会生成效率更高的代码. 您可以用下列的语句释放用完的Employee对象: Employee.Free; 和Create方法一样,Free方法也是TEmployee从TObject中继承过来的.把您的注销放在try…fin