• Delphi7下实现HTTP的Post操作 转


    Delphi7下实现HTTP的Post操作


    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
    IdHTTP, StdCtrls, Buttons, OverbyteIcsWndControl, OverbyteIcsHttpProt;

    type
    TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    function httpPost(postUrl:string;Params:TStrings):string;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.btn1Click(Sender: TObject);
    var
    url : string;
    Params: TStrings;
    begin
    Params := TStringList.Create;
    Params.Add('username=kenter1983');
    Params.Add('password=111111');
    url := 'http://www.cnlive.com/index/?action=login';
    ShowMessage(httpPost(url,Params));

    end;

    function TForm1.httpPost(postUrl:string;Params:TStrings):string;
    var
    idhtp1: TIdHTTP;
    begin
    idhtp1:= TidHTTp.create(self);
    idhtp1.AllowCookies:=True;
    idhtp1.HTTPOptions:=[hoForceEncodeParams];
    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.

    文件流

    Const
    CRLF = #13#10;
    var
    s,s1,filename:String;
    response:TStringStream;
    source,source1:TMemoryStream;
    Url:string;
    i,cnt:integer;
    begin
    idhttp.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[i];
    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[1],length(s));
    Source.Position :=source.Size ;
    Source.Write(s1[1],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;

  • 相关阅读:
    Servlet学习笔记3
    Servlet学习笔记2
    Servlet 学习笔记1
    Response对象学习笔记
    【JavaSE】异常
    【JavaSE】格式化输出
    【JavaSE】泛型
    【JavaSE】集合
    【SpringBoot】(1)-- 基于eclipse配置springboot开发环境
    【Linux】(1)安装
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/3399246.html
Copyright © 2020-2023  润新知