随笔 - 730  文章 - 40 评论 - 17 阅读 - 67万

delphi xe8 推出2个新http控件,NetHTTPRequest、NetHTTPClient

可以调用ASP.Net 一般应用程序获取网页数据,用旧的控件idhttp控件也可以,推荐用新的这2个组件。

TNetHttpClient不依赖OPENSSL

http://localhost:52384/Handler1.ashx

procedure TForm5.Button1Click(Sender: TObject);
var
  ss: TStringStream;
begin
  ss := TStringStream.Create('', TEncoding.ASCII);//中文用UTF8
ss.Clear; self.NetHTTPClient1.Get(url, ss); self.Caption := ss.DataString; ss.Free; end;

 

复制代码
procedure TForm5.Button2Click(Sender: TObject);
var
  ss: TStringStream;
begin
  ss := TStringStream.Create('', TEncoding.ASCII);
  ss.Clear;
  self.NetHTTPRequest1.Get(url);
  self.Caption := ss.DataString;
  ss.Free;
end;
复制代码

 

 

http://docwiki.embarcadero.com/RADStudio/XE8/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE8

 New HTTP Client API

The RTL provides several new network units with members that let you create an HTTP client, send requests to HTTP servers and handle their responses.

Using an HTTP Client explains how to use the two new HTTP components, TNetHTTPClient and TNetHTTPRequest, to handle HTTP requests. See also the main HTTP client classes:

  • THTTPClient, that represents an HTTP client.
  • THTTPRequest, that represents a request from your client to a server.
  • THTTPResponse, that represents the server response to a request from your client. 

 

THTTPClient

http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Net.HttpClient.THTTPClient

OnReceiveData

example code

http://docwiki.embarcadero.com/CodeExamples/Berlin/en/RTL.HttpAsyncDownload_Sample

 

self.NetHTTPClient1.Get('www.sohu.com').ContentAsString(TEncoding.UTF8);

 

NetHTTPClient

复制代码
var
  url: string;
  ss: tstringstream;
begin
  url := Edit1.Text;

  ss := tstringstream.Create('', tencoding.UTF8);
  ss.WriteString(Memo1.Text);
  self.NetHTTPClient1.Accept := 'text/html, application/xhtml+xml, */*';
  self.NetHTTPClient1.ContentType := 'application/x-www-form-urlencoded';//application/json
  self.NetHTTPClient1.AcceptEncoding := 'UTF-8';
  ss.Position := 0;
  Memo2.Text := self.NetHTTPClient1.Post(url, ss).ContentAsString(tencoding.UTF8);
  
  ss.Free;
end;
复制代码

 

 IdHTTP

   self.IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
   self.IdHTTP1.Request.Accept:= 'text/html, application/xhtml+xml, */*';//application/json
   self.Memo2.Text:=self.IdHTTP1.Post(url,ss);

 

 NetHTTPRequest

  self.NetHTTPRequest1.Accept := 'text/html, application/xhtml+xml, */*';
  self.NetHTTPRequest1.url := self.Edit1.Text;
  self.NetHTTPRequest1.MethodString := 'POST';
  self.Memo2.Text := self.NetHTTPRequest1.Post(url, ss).ContentAsString(tencoding.UTF8);

 post 多个参数

    TStringList *ss;
    ss = new TStringList();
    ss->Add("PatientID=aaaaaaaaa");
    ss->Add("PictuerName=BBBBBBBBBBB");

    this->Caption = this->NetHTTPClient1->Post("http://127.0.0.1:8080/datasnap/rest/TServerMethods1/UpPic/", ss)->ContentAsString(TEncoding::ASCII);
    delete ss;

posted on   lypzxy  阅读(9707)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示