delphi Tidhttp用法说明

时间:2024.4.20

delphiTidhttp用法说明

一、IDHTTP的基本用法

IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快、更节约资源,缺点是需要手动维护cook,连接等

IDHttp的创建,需要引入IDHttp

procedure InitHttp();

begin

http := TIdHTTP.Create(nil);

http.ReadTimeout := 30000;

http.OnRedirect := OnRedirect;

http.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*';

//idhtp.Request.Accept :=

//'Accept=text/hmxl,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; http.Request.AcceptLanguage := 'zh-cn';

//idhtp.Request.AcceptCharSet:='Accept-Charset=gb2312,utf-8;q=0.7,*;q=0.7'; http.Request.ContentType := 'application/x-www-form-urlencoded';

http.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)';

http.ProxyParams.ProxyServer := '代理服务器地址';

http.ProxyParams.ProxyPort := '代理服务器端口';

end;

二、如何取得服务端返回的cookie信息,并添加到http的request对象中

procedure Setcookie;

var

i: Integer;

tmp, cookie: String;

begin

cookie := '';

for i := 0 to http.Response.RawHeaders.Count - 1 do

begin

tmp := http.Response.RawHeaders[i];

if pos('set-cookie: ', LowerCase(tmp)) = 0 then Continue;

tmp := Trim(Copy(tmp, Pos('Set-cookie: ', tmp) + Length('Set-cookie: '), Length(tmp)));

tmp := Trim(Copy(tmp, 0, Pos(';', tmp) - 1));

if cookie = '' then cookie := tmp else cookie := cookie + '; ' + tmp; end;

if cookie <> '' then

begin

for i := 0 to http.Request.RawHeaders.Count - 1 do

begin

tmp := http.Request.RawHeaders[i];

if Pos('cookie', LowerCase(tmp)) = 0 then Continue;

http.Request.RawHeaders.Delete(i);

Break;

end;

http.Request.RawHeaders.Add('cookie: ' + cookie);

end;

end;

三、如何取得网页中的所有连接,对代码做修改你也可以实现查找所有图片等等 function GetURLList(Data: String): TStringList;

var

i: Integer;

List: TStringList;

tmp: String;

function Split(Data, Node: String): TStringList;

var

Count, i, j: Integer;

function GetFieldCount(Data, Node: String): Integer;

var

i: Integer;

begin

Result := -1;

i := Pos(Node, Data);

if i = 0 then Exit;

Result := 0;

while i<> 0 do

begin

Inc(Result);

Delete(Data, 1, i + Length(Node) - 1); i := Pos(Node, Data);

end;

end;

begin

Result := TStringList.Create;

Count := GetFieldCount(Data, Node); for i := 0 to Count - 1 do

begin

j := Pos(Node, Data);

Result.Add(Copy(Data, 1, j - 1));

Delete(Data, 1, j + Length(Node) - 1); end;

Result.Add(Data);

end;

begin

Result := TStringList.Create;

try

List := split(Data, 'href=');

for i := 1 to List.Count - 1 do

begin

tmp := List[i];

tmp := Copy(tmp, 0, Pos('</a>', tmp) - 1);

tmp := Copy(tmp, 0, Pos('>', tmp) - 1);

if Pos(' ', tmp) <> 0 then

tmp := Copy(tmp, 0, Pos(' ', tmp) - 1);

tmp := Q_ReplaceStr(tmp, Char(34), '');

tmp := Q_ReplaceStr(tmp, Char(39), '');

if not Compare(CI.Key, tmp) then Continue;

if Copy(tmp, 1, 7) <> 'http://' then

begin

if Copy(tmp, 1, 1) = '.' then tmp := StringReplace(tmp, '.', '', []);

if Copy(tmp, 1, 1) = '.' then tmp := StringReplace(tmp, '.', '', []);

try

tmp := 'http://' + http.URL.Host + ':' + http.URL.Port + http.URL.Path + tmp; except

end;

end;

if Result.IndexOf(tmp) <> -1 then Continue;

Result.Add(tmp);

end;

FreeAndNil(List);

except

end;

end;

四、如何模拟http的get方法打开一个网页

function GetMethod(http: TIDhttp; URL: String; Max: Integer): String; var

RespData: TStringStream;

begin

RespData := TStringStream.Create('');

try

try

Http.Get(URL, RespData);

Http.Request.Referer := URL;

Result := RespData.DataString;

except

Dec(Max);

if Max = 0 then

begin

Result := '';

Exit;

end;

Result := GetMethod(http, URL, Max);

end;

finally

FreeAndNil(RespData);

end;

end;

五、如何模拟http的post方法提交一个网页

function PostMethod(URL, Data: String; max: Integer): String; var

PostData, RespData: TStringStream;

begin

RespData := TStringStream.Create('');

PostData := TStringStream.Create(Data);

try

try

if http = nil then Exit;

Http.Post(URL, PostData, RespData);

Result := RespData.DataString;

http.Request.Referer := URL;

except

Dec(Max);

if Max = 0 then

begin

Result := '';

Exit;

end;

Result := PostMethod(URL, Data, Max);

end;

finally

http.Disconnect;

FreeAndNil(RespData);

FreeAndNil(PostData);

end;

end;

六、伪造session

var

My_Cookie,tmpcookie:string;

begin

aIdHttp.Get('/');

tmpcookie:=aIdHttp.Request.CustomHeaders.Values['Set-Cookie']; if Pos(';',tmpcookie)>0 then

My_Cookie:=LeftBStr(tmpcookie,Pos(';',tmpcookie)-1)

else

My_Cookie:= tmpcookie;

//

aIdHTTP.Request.CustomHeaders.Clear;

aIdHTTP.Request.CustomHeaders.Add('Cookie:'+My_COOKIE); end;


第二篇:delphi函数说明


通过做个小程序培养了学习delphi的兴趣 我在网上也找到了一些Delphi的函数说明 了解了一下 ---------------------------------------- Abort 函数 引起放弃的意外处理 Abs 函数 绝对值函数 AddExitProc 函数 将一过程添加到运行时库的结束过程表中 Addr函数 返回指定对象的地址 AdjustLineBreaks函数 将给定字符串的行分隔符调整为CR/LF序列 Align 属性 使控件位于窗口某部分 Alignment 属性 控件标签的文字位置 AllocMem函数 在堆栈上分配给定大小的块 AllowGrayed 属性 允许一个灰度选择 AnsiCompareStr函数 比较字符串(区分大小写) AnsiCompareText 函数 比较字符串(不区分大小写) AnsiLowerCase 函数 将字符转换为小写 AnsiUpperCase 函数 将字符转换为大写 Append函数 以附加的方式打开已有的文件 ArcTan函数 余切函数 AssignFile函数 给文件变量赋一外部文件名 Assigned函数 测试函数或过程变量是否为空 AutoSize属性 自动控制标签的大小 BackgroundColor 属性 背景色 BeginThread 函数 以适当的方式建立用于内存管理的线程 BevelInner属性 控件方框的内框方式 BevelOuter属性 控件方框的外框方式 BevelWidth属性 控件方框的外框宽度 BlockRead 函数 读一个或多个记录到变量中 BlockWrite函数 从变量中写一个或多个记录2007-8-1 15:00 回复59.46.49.* 11楼BorderStyle 属性 边界类型 BorderWidth 属性 边界宽度 Break 命令 终止for、while、repeat循环语句 Brush 属性 画刷 Caption 属性 标签文字的内容 ChangeFileExt 函数 改变文件的后缀 ChDir

函数 改变当前目录 Checked 属性 确定复选框选中状态 Chr 函数 返回指定序数的字符 CloseFile 命令 关闭打开的文件 Color 属性 标签的颜色 Columns 属性 显示的列数 CompareStr函数 比较字符串(区分大小写) Concat函数 合并字符串 Continue命令 继续for、while、repeat的下一个循环 Copy函数 返回一字符串的子串 Cos 函数 余弦函数 Ctl3D 属性 是否具有3D效果 Cursor属性 鼠标指针移入后的形状 Date函数 返回当前的日期 DateTimeToFileDate函数 将DELPHI的日期格式转换为DOS的日期格式 DateTimeToStr 函数 将日期时间格式转换为字符串 DateTimeToString函数 将日期时间格式转换为字符串 DateToStr 函数 将日期格式转换为字符串 DayOfWeek 函数 返回星期的数值 Dec 函数 递减变量值 DecodeDate函数 将日期格式分解为年月日 DecodeTime函数 将时间格式分解为时、分、秒、毫秒 Delete函数 从字符串中删除子串 DeleteFile命令 删除文件 DiskFree函数 返回剩余磁盘空间的大小 DiskSize函数 返回指定磁盘的容量 Dispose 函数 释放动态变量所占的空间 DisposeStr函数 释放字符串在堆栈中的内存空间 DitherBackground属性 使背景色的色彩加重或减少50% DragCursor属性 当鼠标按下时光标的形状 DragMode属性 按动的作用方式 DropDownCount 属性 容许的显示数据项的数目 EditMask属性 编辑模式 Enabled 属性 是否使标签呈现打开状态 EncodeDate

函数 将年月日合成为日期格式 EncodeTime函数 将时、分、秒、毫秒合成为时间格式 EndMargin 属性 末尾边缘 Eof 函数 对有类型或无类型文件测试是否到文件尾 Eoln函数 返回文本文件的行结束状态 Erase 命令 删除外部文件 ExceptAddr函数 返回引起当前意外的地址 Exclude 函数 从集合中删除一些元素 ExceptObject函数 返回当前意外的索引 Exit命令 立即从当前的语句块中退出 2007-8-1 15:01 回复59.46.49.* 12楼Exp 函数 指数函数 ExpandFileName函数 返回包含绝对路径的字符串 ExtendedSelect属性 是否允许存在选择模式,True时,MultiSelect才有意义 ExtractFileDir函数 返回驱动器和路径 ExtractFileExt函数 返回文件的后缀 ExtractFileName 函数 返回文件名 ExtractFilePath 函数 返回指定文件的路径 FileAge 函数 返回文件已存在的时间 FileClose 命令 关闭指定的文件 FileCreate命令 用指定的文件名建立新文件 FileDateToDateTime函数 将DOS的日期格式转换为DELPHI的日期格式 FileExists函数 检查文件是否存在 FileGatAttr 函数 返回文件的属性 FileGetDate 函数 返回文件的DOS日期时间标记 FileOpen命令 用指定的存取模式打开指定的文件 FilePos 函数 返回文件的当前指针位置 FileRead命令 从指定的文件读取 FileSearch命令 在目录中搜索指定的文件 FileSeek函数 改变文件的指针 FileSetAttr 函数 设置文件属性 FileSetDate 函数 设置文件的DOS日期时间标记 FileSize函数 返回当前文件的大小 FileWrite 函数 对指定的文件做

写操作 FillChar函数 用指定的值填充连续字节的数 FindClose 命令 终止FindFirst/FindNext序列 FindFirst 命令 对指定的文件名及属性搜索目录 FindNext命令 返回与文件名及属性匹配的下一入口 FloatToDecimal函数 将浮点数转换为十进制数 FloatToStrF 函数 将浮点数转换为字符串 FloatToStr函数 将浮点数转换为字符串 FloatToText 函数 将给定的浮点数转换为十进制数 FloatToTextFmt函数 将给定的浮点数转换为十进制数 Flush 函数 将缓冲区的内容刷新到输出的文本文件中 FmtLoadStr函数 从程序的资源字符串表中装载字符串 FmtStr函数 格式化一系列的参数,其结果以参数Result返回 Font属性 设置字体 Format函数 格式化一系列的参数并返回Pascal字符串 FormatBuf 函数 格式化一系列的参数 FormatDateTime函数 用指定的格式来格式化日期和时间 FormatFloat 函数 指定浮点数格式 Frac函数 返回参数的小数部分 FreeMem 函数 按给定大小释放动态变量所占的空间 GetDir 返回指定驱动器的当前目录 GetHeapStatus返回内存管理器的当前状态 GetMem 建立一指定大小的动态变量,并将指针指向该处 GetMemoryManager 返回内存管理器的入口点 Glyph 函数 按钮上的图象 Halt 停止程序的执行并返回到操作系统 Hi 返回参数的高地址位 High 返回参数的上限值 Hint属性 提示信息 Int返回参数的整数部分 Include添加元素到集合中 Insert 在字符串中插入子串

IntToHex 将整型数转换为十六进制数 IntToStr 将整型数转换为字符串2007-8-1 15:01 回复59.46.49.* 13楼IOResult 返回最新的I/O操作完成状态 IsValidIdent 测试字符串是否为有效的标识符 Items 属性 默认显示的节点 Kind属性 摆放样式 LargeChange 属性 最大改变值 Layout属性 图象布局 Length函数 返回字符串的动态长度 Lines 属性 缺省显示内容 Ln函数 自然对数函数 Lo函数 返回参数的低地址位 LoadStr 函数 从应用程序的可执行文件中装载字符资源 LowerCase 函数 将给定的字符串变为小写 Low 函数 返回参数的下限值 Max 属性 最大值 MaxLength 属性 最大长度 Min 属性 最小值 MkDir 命令 建立一子目录 Move函数 从源到目标复制字节 MultiSelect 属性 允许同时选择几个数据项 Name属性 控件的名字 New 函数 建立新的动态变量并设置一指针变量指向他 NewStr函数 在堆栈上分配新的字符串 Now 函数 返回当前的日期和时间 Odd测试参数是否为奇数 OnActivate事件 焦点移到窗体上时触发 onClick 事件 单击窗体空白区域触发 OnDblClick事件 双击窗体空白区域触发 OnCloseQuery事件 使用者试图关闭窗体触发 OnClose 事件 窗体关闭后才触发 OnCreate事件 窗体第一次创建时触发 OnDeactivate事件 用户切换到另一应用程序触发 OnDragDrop

事件 鼠标拖放操作结束时触发 OnDragOver事件 有其他控件从他上面移过触发 onMouseDown 事件 按下鼠标键时触发 onMouseUp 事件 释放鼠标键时触发 onMouseMove 事件 移动鼠标时触发 OnHide事件 隐藏窗体时触发 onKeyDown 事件 按下键盘某键时触发 onKeyPress事件 按下键盘上的单个字符键时触发 onKeyUp 事件 释放键盘上的某键时触发 OnPaint 事件 窗体上有新部分暴露出来触发 OnResize事件 重新调整窗体大小触发 OnShow事件 在窗体实际显示之前瞬间触发 Ord返回序数类的序数 OutlineStyle属性 类型 OutOfMemoryError 引起OutOfMemory意外2007-8-1 15:01 回复59.46.49.* 14楼PageIndex 属性 页索引 Pages 属性 页 ParamCount函数 返回在命令行上传递给程序的参数数量 ParamStr函数 返回指定的命令行参数 Pen 属性 画刷设置 Pi函数 返回圆周率Pi Picture 属性 显示图象 PictureClosed 属性 设置Closed位图 PictureLeaf 属性 设置Leaf位图 PictureMinus属性 设置Minus位图 PictureOpen 属性 设置Open位图 PicturePlus 属性 设置Plus位图 Pos 函数 在字符串中搜索子串 Pred函数 返回先前的参数 Random函数 返回一随机函数 Randomize 函数 用一随机数初始化内置的随机数生成器 Read函数 对有格式的文件,读一文件组件到变量中;  对文本文件,读一个或多个值到一个或多个变量中 Readln函数 执行Read过程,然后跳到文件下一

行 ReadOnly属性 只读属性 ReAllocMem函数 分配一动态变量 Rename函数 重命名外部文件 RenameFile函数 对文件重命名 Reset 函数 打开已有的文件 Rewrite 函数 建立并打开一新的文件 RmDir 函数 删除空的子目录 Round 函数 将实数值舍入为整型值 RunError函数 停止程序的执行 ScrollBars属性 滚动条状态 Seek函数 将文件的当前指针移动到指定的组件上 SeekEof 函数 返回文件的文件结束状态 SeekEoln函数 返回文件的行结束状态 SelectedColor 属性 选中颜色 SetMemoryManager函数 设置内存管理器的入口点 SetTextBuf函数 给文本文件指定I/O缓冲区 Shape 属性 显示的形状 ShowException 函数 显示意外消息与地址 Sin 函数 正弦函数 SizeOf函数 返回参数所占的字节数 SmallChange 属性 最小改变值 Sorted属性 是否允许排序 Sqr 函数 平方函数 Sqrt函数 平方根函数 StartMargin 属性 开始边缘 State 属性 控件当前状态 Str 函数 将数值转换为字符串 StrAlloc函数 给以NULL结束的字符串分配最大长度-1的缓冲区 StrBufSize函数 返回存储在由StrAlloc分配的字符缓冲区的最大字符数 StrCat函数 将一字符串附加到另一字符串尾并返回合并的字符串 StrComp 函数 比较两个字符串 StrCopy 函数 将一个字符串复制到另一个字符串中 StrDispose函数 释放堆栈上的字符串 StrECopy函数 将一字符串复制到另一

个字符串并返回结果字符串尾部的指针 StrEnd函数 返回指向字符串尾部的指针2007-8-1 15:02 回复59.46.49.* 15楼Stretch 属性 自动适应控件的大小 StrFmt函数 格式化一系列的参数 StrIComp函数 比较两个字符串(不区分大小写) StringToWideChar函数 将ANSI字符串转换为UNICODE字符串 StrLCat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串 StrLComp函数 以最大长度比较两个字符串 StrLCopy函数 将一个字符串中的字符复制到另一个字符串中 StrLen函数 返回字符串中的字符数 StrLFmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针 StrLIComp 函数 以最大长度比较两个字符串(不区分大小写) StrLower函数 将字符串中的字符转换为小写 StrMove 函数 将一个字符串中的字符复制到另一个字符串中 StrNew函数 在堆栈上分配一个字符串 StrPas函数 将以NULL结束的字符串转换为PASCAL类的字符串 StrPCopy函数 将PASCAL类的字符串复制为以NULL结束的字符串 StrPLCopy 函数 从PASCAL类的最大长度字符串复制为以NULL结束的字符串 StrPos函数 返回一个字符串在另一个字符串中首次出现指针 StrRScan函数 返回字符串中最后出现字符的指针 StrScan 函数 返回字符串中出现首字符的指针 StrToDate 函数 将字符串转换为日期格式 StrToDateTime 函数 将字符串转换为日期/时间格式 StrToFloat函数 将给定的字符串转换为浮点数 StrToInt函数 将字符串转换为整型 StrToIntDef 函数 将字符串转换为整型或默认值 StrToTime 函数 将字符串转换为时间格式 StrUpper函数 将字符串中的字符转换为大写 Style

 属性 类型选择 Suce函数 返回后继的参数 Swap函数 交换参数的高低地址位 Tabs属性 标记每一项的内容 TabIndex属性 标记索引 Text属性 显示的文本 TextToFloat 函数 将字符串(以NULL结束的格式)转换为浮点数 Time函数 返回当前的时间 TimeToStr 函数 将时间格式转换为字符串 Trim函数 从给定的字符串中删除前导和尾部的空格及控制字符 TrimLeft函数 从给定的字符串中删除首部的空格及控制字符 TrimRight 函数 从给定的字符串中删除尾部的空格及控制字符 Trunc 函数 将实型值截取为整型值 Truncate函数 截去当前文件位置后的内容 UnSelectedColor 属性 未选中颜色 UpCase 将字符转换为大写 UpperCase将给定的字符串变为大写2007-8-1 15:02 回复59.46.49.* 16楼Val 函数 将字符串转换为整型值 VarArrayCreate函数 以给定的界限和维数建立变体数组 VarArrayDimCount函数 返回给定变体的维数 VarArrayHighBound 函数 返回给定变体数组维数的上界 VarArrayLock函数 锁定给定的变体数组 VarArrayLowBound函数 返回给定变体数组维数的下界 VarArrayOf函数 返回指定变体的数组元素 VarArrayRedim 函数 通过改变上限来调整变体的大小 VarArrayUnlock函数 解锁指定的变体数组 VarAsType 函数 将变体转换为指定的类型 VarCase 函数 将变体转换为指定的类型并保存他 VarClear函数 清除指定的变体 VarCopy 函数 将指定的变体复制为指定的变体 VarFormDateTime 函数 返回包含日期时间的变体 VarIsArray函数 测试变体是否为

数组 VarIsEmpty函数 测试变体是否为UNASSIGNED VarIsNull 函数 测试变体是否为NULL VarToDateTime 函数 将给定的变体转换为日期时间 VarType 函数 将变体转换为指定的类型并保存他 Visible 属性 控件的可见性 WantReturns 属性 为True时,按回车键产生一个回车符;  为False时,按下Ctrl+Enter才产生回车符 Write 命令 对有格式的文件,写一变量到文件组件中;  对文本文件,写一个或多个值到文件中 Writeln 命令 执行WRITE过程,然后输出一行结束标志 WideCharLenToString 函数 将ANSI字符串转换为UNICODE字符串 WideCharLenToStrWar 函数 将UNICODE字符串转换为ANSI字符串变量 WideCharToString函数 将UNICODE字符串转换为ANSI字符串 WideCharToStrVar函数 将UNICODE字符串转换为ANSI字符串变量

更多相关推荐:
The Little Prince读后感

BookReportofTheLittlePrinceTheLittlePrincefirstpublishedin19xxisanovellaandthemostfamousworkoftheFrencharistocratwr...

The little prince英文读后感

ThelittleprinceAfairytaleofloveandresponsibilityThelittleprincewhichwaswrittenbyAntoinedeSaintExuperyisoneofthegrea...

the little prince英文读后感

姓名罗紫俊学号1225011031班级英教20xx级10班ThelittleprinceForalongtimeIvealwaystriedtofindsomeoneuniqueAhumorousoneTall...

The Little Prince读后感

MyFeelingALittlePrinceLittlePrinceisaclearspiritualbookasclearasthewateritisabookaboutlifeandthelivesofth...

小王子(The Little Prince)英语读后感

小王子TheLittlePrince英语读后感TitleTheLittlePrinceAuthorAntoinedeStExuperyMainCharactersThelittleprincethepilott...

The little prince 读后感

TheimpressionofreadingTheLittlePrinceWhenIwasinthehighschoolmyteacherhadintroducedthisbookTheLittlePrincetousButatt...

The Little Prince读后感

TheLittlePrinceThelittleprincewaspublishedin19xxItstheworldfamousfairytalebytheFrenchauthorAntoinedeStExuperyTheLit...

爱上分享 “The little prince”读书报告

13May20xxMaybeyouhaveseenthenovelbeforeTheLittlePrinceornotTonightImsohappytosharewithyouaboutmyfeelingafterIhavese...

小王子(The Little Prince)的读书笔记

TheLittlePrinceTheLittlePrinceisabookforeveryoneItswrittenbyAntoinedeSaintExuperyItisabookforheartItcantouchthebott...

《小王子》读后感 Little Prince

小王子读后感LittlePrinceRecentlyIreadafairystorybookLittlePrinceThisbooktellstheadventurousexperiencesoflittlep...

《小王子》读后感 Little Prince

小王子读后感LittlePrinceRecentlyIreadafairystorybookLittlePrinceThisbooktellstheadventurousexperiencesoflittlep...

The happy prince快乐王子英文读后感

ThehappyprinceThehappyprinceisafamousfairytalewrittenbyOscarWildeWhenIfirstheardthebooksnameIthoughtitmustbeaninter...

the little prince读后感(20篇)