本文整理自网络,侵删。
使用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》频道 >>