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 实现php的urlencode编码效果

Delphi货币类型转中文大写金额

Delphi 标题栏相关操作

Delphi xe5中以andorid 启动应用程序

Delphi xe7使用本身的md5单元进行字符串加密

Delphi 文件分割合并

Delphi-xe5-开发 android uri简介

Delphi 脉搏波9808血压计读取测试程序

embarcadero开源项目赞助

Delphi整理六(数据与记录)

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



打赏

取消

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

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

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

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

评论

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