zoukankan      html  css  js  c++  java
  • Delphi IDHTTP控件:GET/POST 请求

    最近一直在使用IDHTTP,下面是一些关于 GET、POST 请求基本使用方法的代码

    一、GET 请求

    procedure GetDemo;
    var
      IdHttp : TIdHTTP;
      Url : string;//请求地址
      ResponseStream : TStringStream; //返回信息
      ResponseStr : string;
    begin
      //创建IDHTTP控件
      IdHttp := TIdHTTP.Create(nil);
      //TStringStream对象用于保存响应信息
      ResponseStream := TStringStream.Create('');
      try
        //请求地址
        Url := 'http://dict.youdao.com/';
        try
          IdHttp.Get(Url,ResponseStream);
        except
          on e : Exception do
          begin
            ShowMessage(e.Message);
          end;
        end;
        //获取网页返回的信息
        ResponseStr := ResponseStream.DataString;
        //网页中的存在中文时,需要进行UTF8解码
        ResponseStr := UTF8Decode(ResponseStr);
      finally
        IdHttp.Free;
        ResponseStream.Free;
      end;   
    end;

    如果Get需要添加请求参数,则直接在地址后添加,各参数间用&连接

    如:http://dict.youdao.com?param1=1&param2=2

    二、Post 请求

    procedure PostDemo;
    var
      IdHttp : TIdHTTP;
      Url : string;//请求地址
      ResponseStream : TStringStream; //返回信息
      ResponseStr : string;
    
      RequestList : TStringList;     //请求信息
      RequestStream : TStringStream;
    begin
      //创建IDHTTP控件
      IdHttp := TIdHTTP.Create(nil);
      //TStringStream对象用于保存响应信息
      ResponseStream := TStringStream.Create('');
    
      RequestStream := TStringStream.Create('');
      RequestList := TStringList.Create;
      try
        Url := 'http://f.youdao.com/?path=fanyi&vendor=fanyiinput';
        try
          //以列表的方式提交参数
          RequestList.Add('text=love');
          IdHttp.Post(Url,RequestList,ResponseStream);
    
          //以流的方式提交参数
          RequestStream.WriteString('text=love');
          IdHttp.Post(Url,RequestStream,ResponseStream);
        except
          on e : Exception do
          begin
            ShowMessage(e.Message);
          end;
        end;
        //获取网页返回的信息
        ResponseStr := ResponseStream.DataString;
        //网页中的存在中文时,需要进行UTF8解码
        ResponseStr := UTF8Decode(ResponseStr);
      finally
        IdHttp.Free;
        RequestList.Free;
        RequestStream.Free;
        ResponseStream.Free;
      end;
    end;

    Post请求在网页中多使用List形式提交参数。

    不过在一些API中规定了POST的请求格式为 JSON 格式或 XML,这是需要注意发起请求前需要先设置 ContentType 属性,使用Stream方式提交

    已上面代码为例:

    提交 JSON 格式:IdHttp.Request.ContentType :='application/json';

    提交 XML 格式: IdHttp.Request.ContentType :='text/xml';

    如未按要求格式提交,一般会返回 HTTP 1.1 / 415

  • 相关阅读:
    BZOJ1527 : [POI2005]Pun-point
    2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
    2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016)
    NAIPC-2016
    BZOJ2498 : Xavier is Learning to Count
    ACM ICPC Vietnam National Second Round
    XVI Open Cup named after E.V. Pankratiev. GP of Ukraine
    XVI Open Cup named after E.V. Pankratiev. GP of Peterhof
    HDU5509 : Pattern String
    BZOJ4583 : 购物
  • 原文地址:https://www.cnblogs.com/marklove/p/9206832.html
Copyright © 2011-2022 走看看