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 xe更改ttrayicon系统任务栏图标(无模糊)

Delphi selectdirectory 选择文件夹

Delphi xe10.1 andriod app中文名称

Delphi拷贝整个目录(包括子目录)

Delphi 播放声音 建议采用 异步方式,比较流畅

Delphi webbrowser全选\复制\粘贴

Delphi 遍历类中的属性

Delphi 读cpu串号的代码

Delphi实现图像反色实例4种方法

Delphi 取得开机时间 开机时间总长度(可精确到秒,分钟等)

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



打赏

取消

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

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

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

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

评论

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