Delphi里的ICS控件下的THttpCli如何实现HTTP的GET呢?

30 | 问答知识库用户 |浏览359次
收藏|2014/05/17 22:00
如题

满意回答

2014/05/18 09:32

使用DELPHI xe在做百度收录提交软件的时候,我也用的ICS控件,下面是一个简单的例子,利用ICS控件获取百度URL提交页面验证码的DEMO
procedure TForm1.GetImageCode;
var
  AURL, AFileName: string;
  AParamList: TStringList;
  ARspStreamData: TStringStream;
  Ms: TMemoryStream;
  Json: ISuperObject;

  APostData: AnsiString;
begin
  try
    AParamList := TStringList.Create;
    try
      ARspStreamData := TStringStream.Create('', TEncoding.UTF8);
      try
        AURL := 'http://zhanzhang.baidu.com/captcha';
        AParamList.Add('async=false');
        AParamList.Add('n=' + GetUnixTime(0, True));
        APostData := GetPostData(AParamList);
        HttpCli1.SendStream := TMemoryStream.Create;
        HttpCli1.SendStream.Write(APostData[1], Length(APostData));
        HttpCli1.SendStream.Seek(0, 0);
        HttpCli1.RcvdStream := ARspStreamData;
        HttpCli1.URL := AURL;
        HttpCli1.ContentTypePost := 'application/x-www-form-urlencoded';
        HttpCli1.Post;
        Memo1.Lines.Add(ARspStreamData.DataString);

        Ms := TMemoryStream.Create;
        try
          Json := SO(ARspStreamData.DataString);
          AURL := Json.S['url'];
          HttpCli1.URL := AURL;
          HttpCli1.RcvdStream := Ms;
          HttpCli1.Get;
          AFileName := ExtractFilePath(ParamStr(0)) + 'ImageCode.jpg';
          Ms.SaveToFile(AFileName);
          Image1.Picture.LoadFromFile(AFileName);
        finally
          Ms.Free;
        end;
      finally
        ARspStreamData.Free;
      end;
    finally
      AParamList.Free;
    end;
  except
    GetImageCode;
  end;
end;

热心网友

其他回答(0)
0人关注该问题
待解决问题



+1
 加载中...