kenter1643 发表于 2013-2-7 08:58:08

delphi7下实现http的post操作

unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,IdHTTP, StdCtrls, Buttons, OverbyteIcsWndControl, OverbyteIcsHttpProt;typeTForm1 = class(TForm)    btn1: TButton;    procedure btn1Click(Sender: TObject);private    { Private declarations }public    { Public declarations }    functionhttpPost(postUrl:string;Params:TStrings):string;end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);varurl : string;Params:   TStrings;beginParams   :=   TStringList.Create;Params.Add('username=kenter1983');Params.Add('password=111111');url := 'http://www.cnlive.com/index/?action=login';ShowMessage(httpPost(url,Params));end;functionTForm1.httpPost(postUrl:string;Params:TStrings):string;varidhtp1:   TIdHTTP;beginidhtp1:=   TidHTTp.create(self);idhtp1.AllowCookies:=True;idhtp1.HTTPOptions:=;idhtp1.ProtocolVersion:=pv1_1;idhtp1.Request.ContentType:='application/x-www-form-urlencoded';idhtp1.Request.CacheControl:='no-cache';   idhtp1.Request.UserAgent:='User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1';idhtp1.Request.Accept:='Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';idhtp1.Request.AcceptEncoding:='Accept-Encoding=gzip,deflate';idhtp1.Request.AcceptCharSet:='Accept-Charset=gb2312,utf-8;q=0.7,*;q=0.7';idhtp1.Request.Connection:='Connection=keep-alive';try      result := idhtp1.Post(postUrl,Params);except    Result := 'error';end;end;end. 
文件流
ConstCRLF = #13#10;vars,s1,filename:String;response:TStringStream;source,source1:TMemoryStream;Url:string;i,cnt:integer;beginidhttp.Request.ContentType:='multipart/form-data';Response := TStringStream.Create('');url:='Http://'+host+dir;cnt:=files.Count;if (not dead) then    begin   for i:=0 to cnt-1 do      begin      filename:=files;      if fileexists(filename) then       begin      try      S := '-----------------------------7cf1d6c47c' + CRLF +             'Content-Disposition: form-data; name="file1"; filename="'+filename+'"'+CRLF +             'Content-Type: application/octet-stream' + CRLF + CRLF;      //上传文件内容      s1:='file one content. Contant-Type can be application/octet-stream or if'+            'you want you can ask your OS fot the exact type.' + CRLF +            '-----------------------------7cf1d6c47c' + CRLF + //分界符,用于分隔表单(Form)中的各个域            'Content-Disposition: form-data; name="text1"' + CRLF + CRLF +            'hello2' + CRLF +            '-----------------------------7cf1d6c47c--';      //提交的下一个表单内容域的内容      s1:=CRLF +'-----------------------------7cf1d6c47c' + CRLF +            'Content-Disposition: form-data; name="text1"' + CRLF + CRLF +            'hello2' + CRLF +            '-----------------------------7cf1d6c47c--';      Source := TMemoryStream.Create;      Source1 := TMemoryStream.Create;      Source1.LoadFromFile(filename);      Response:=TStringStream.Create('') ;      Response.CopyFrom(source1,source1.Size);      s:=s+Response.DataString;//因为只能传字符串      Source.Position :=0;      Source.Write(s,length(s));      Source.Position :=source.Size ;      Source.Write(s1,length(s1));      Response.Position :=0;      try          idHTTP.Post(url, Source, Response);      finally          if not uploadsuccess(Response.DataString) then         begin            dead:=true;            self.idhttp.Disconnect;         end;          Source.Free;          Response.Free;      end;
页: [1]
查看完整版本: delphi7下实现http的post操作