delphi 使用TNetHTTPRequest / TNetHTTPClient访问Web服务器  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

delphi 使用TNetHTTPRequest / TNetHTTPClient访问Web服务器


使用TNetHTTPRequest / TNetHTTPClient访问Web服务器
TNetHTTPRequest和TNetHTTPClient组件是XE8中添加的新组件。
这是使用TNetHTTPRequest组件和TNetHTTPClient组件访问Web服务器的示例。

将TNetHTTPRequest和TNetHTTPClient组件放置在窗体上之后,将TNetHTTPRequest组件
的Client属性设置为TNetHTTPClient组件。

使用Get方法访问
使用TNetHTTPRequest的Get方法。

var
  Url: string;
  ResponseContent: TMemoryStream;
  Encoding: TEncoding;
begin
  URL := 'http://www.xxx.com/';
  ResponseContent := TMemoryStream.Create;
  Encoding := TEncoding.GetEncoding(932);
  NetHTTPRequest1.Get(Url, ResponseContent);
  Memo1.Lines.LoadFromStream(ResponseContent, Encoding);
end;
使用Post方法访问
使用TNetHTTPRequest的Post方法。

var
  URL: string;
  Source: TMultipartFormData;
  ResponseContent: TMemoryStream;
  Encoding: TEncoding;
begin
  URL := 'http://test2.localhost/index.php';
  Source := TMultipartFormData.Create;
  Source.AddField('param', 'value');
  ResponseContent := TMemoryStream.Create;
  Encoding := TEncoding.UTF8;
  NetHTTPRequest1.Post(URL, Source, ResponseContent);
  Memo1.Lines.LoadFromStream(ResponseContent, Encoding);
处理HTTP响应
可以使用TNetHTTPRequest的OnRequestCompleted事件获取响应数据。

procedure TForm1.Button3Click(Sender: TObject);
var
  URL: string;
begin

  URL := 'http://www.xxx.com/';
  NetHTTPRequest1.OnRequestCompleted := Self.RequestCompleted;
  NetHTTPRequest1.Get(URL);
end;

procedure TForm1.RequestCompleted(const Sender: TObject;
  const AResponse: IHTTPResponse);
var
  Encoding: TEncoding;
begin

  case AResponse.Version of
    THTTPProtocolVersion.UNKNOWN_HTTP:
      Memo1.Lines.Add('Version = UNKNOWN_HTTP');
    THTTPProtocolVersion.HTTP_1_0:
      Memo1.Lines.Add('Version = HTTP_1_0');
    THTTPProtocolVersion.HTTP_1_1:
      Memo1.Lines.Add('Version = HTTP_1_1');
    THTTPProtocolVersion.HTTP_2_0:
      Memo1.Lines.Add('Version = HTTP_2_0');
  end;

  Memo1.Lines.Add('StatusCode = ' + AResponse.StatusCode.ToString);
  Encoding := TEncoding.GetEncoding(932); 
  Memo1.Lines.Add('Content = ' + AResponse.ContentAsString(Encoding));
end;


当TNetHTTPClient的AllowCookies属性设置为True时,收到的cookie将存储在CookieManager中。

var
  URL: string;
  ResponseContent: TMemoryStream;
  Cookies: TCookiesArray;
  Cookie: TCookie;
begin

  NetHTTPClient1.AllowCookies := True;
  URL := 'http://test2.localhost/index.php';
  ResponseContent := TMemoryStream.Create;
  NetHTTPRequest1.Get(URL, ResponseContent);
  Cookies := NetHTTPClient1.CookieManager.Cookies;
  for Cookie in Cookies do
  begin
    Memo1.Lines.Add(Cookie.Name + ' = ' + Cookie.Value);
  end;
end;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.040165901184082 seconds