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;

相关阅读 >>

Delphi 调试ios时出现 please specify exact device preset uuid

Delphi xe android/ios 手势介绍

Delphi setcursorpos函数在窗口上定位鼠标坐标

Delphi firedac 另存json

Delphi中怎样得到系统当前“输入法”名称?

Delphi webbrowser 无法调用当前浏览器的版本

Delphi关于tjpegimage的使用(bmp\ jpg格式转换)

Delphi extractclassname 字符串处理函数

Delphi 2009 中 string 与 char 的改变

Delphi idhttp使用代理ip

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...