delphi XE8 NetHTTPRequest NetHTTPClient

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

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

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;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi XE10提供了NetHTTPClient用于进行HTTP请求,并且可以通过POST方法发送JSON数据。具体操作步骤如下: 1. 首先,在项目中添加REST.Json单元,用于JSON解析和生成。 2. 创建TJSONObject对象,并使用TJSONPair对象向其中添加键值对。 3. 通过TJSONObject对象的ToString方法将JSON对象转换成字符串。 4. 创建TStringStream对象,并将步骤3中生成的JSON字符串写入到TStringStream中。 5. 创建NetHTTPClient对象,并设置请求的ContentType属性为application/json。 6. 通过Post方法发送HTTP请求,并将步骤4中的TStringStream作为参数传递。 以下是实现上述步骤的示例代码: var json: TJSONObject; pair: TJSONPair; stream: TStringStream; httpClient: TNetHTTPClient; response: IHTTPResponse; begin json := TJSONObject.Create; try pair := TJSONPair.Create('name', 'John'); json.AddPair(pair); pair := TJSONPair.Create('age', 30); json.AddPair(pair); stream := TStringStream.Create(json.ToString); try httpClient := TNetHTTPClient.Create(nil); try httpClient.ContentType := 'application/json'; response := httpClient.Post('http://example.com/api', stream); ShowMessage(response.ContentAsString); finally httpClient.Free; end; finally stream.Free; end; finally json.Free; end; end; 其中,请求的URL地址为http://example.com/api,JSON对象包含了两个键值对,分别为name和age。通过调用httpClient.Post方法将JSON数据发送到指定的URL地址,并且接收返回的HTTP响应结果。 ### 回答2: Delphi XE10提供的TNetHTTPClient组件能够进行HTTP请求的发送和接收,包括POST请求和JSON数据的传输。 使用TNetHTTPClient发送POST请求需要设置请求方法和请求头,并将请求数据写入请求体中。例如,以JSON格式发送POST请求: var HttpClient: TNetHTTPClient; Response: IHTTPResponse; JsonToSend: TJSONObject; RequestContent: TStringStream; begin HttpClient := TNetHTTPClient.Create(nil); try JsonToSend := TJSONObject.Create; JsonToSend.AddPair('name', 'John'); JsonToSend.AddPair('age', '25'); RequestContent := TStringStream.Create(JsonToSend.ToString, TEncoding.UTF8); try HttpClient.ContentType := 'application/json'; Response := HttpClient.Post('http://example.com/myservice', RequestContent); // 处理响应 finally RequestContent.Free; end; finally HttpClient.Free; end; end; 在这个例子中,首先创建了一个TNetHTTPClient对象。然后构建了要发送的JSON数据,以TJSONObject形式存储。接着创建一个TStringStream对象,以UTF-8编码写入JSON数据作为请求体。通过设置ContentType为application/json,告诉服务端请求的数据类型是JSON格式。最后调用Post方法发送请求,并处理响应。 总之,使用Delphi XE10提供的TNetHTTPClient组件进行POST请求发送和JSON数据的传输是非常方便和易于实现的。 ### 回答3: Delphi XE10中提供了NetHTTPClient组件,可以通过该组件发起HTTP请求,包括POST请求并发送JSON数据。实现步骤如下: 1. 在工具栏中找到NetHTTPClient组件并拖拽到窗体上。 2. 在代码中实例化NetHTTPClient组件,并设置请求的URL和请求方法为'POST'。 3. 创建TJSONObject对象,将需要发送的数据加入该JSON对象中。 4. 设置NetHTTPClient的ContentType为'application/json',并将JSON对象转换为字符串后,设置RequestContent属性。 5. 调用NetHTTPClient的Execute方法发起请求,请求结果保存在response字符串中。 6. 最后,释放NetHTTPClient对象和JSON对象。 示例代码如下: var httpClient: TNetHTTPClient; data: TJSONObject; response: string; begin httpClient := TNetHTTPClient.Create(nil); try httpClient.ContentType := 'application/json'; httpClient.Accept := 'application/json'; data := TJSONObject.Create; try data.AddPair('name', 'John'); data.AddPair('age', 25); httpClient.Request.Content := StringOf(data); response := httpClient.Post('http://example.com/', nil); // 处理服务端返回结果(response) finally data.Free; end; finally httpClient.Free; end; end; 以上就是使用Delphi XE10中的NetHTTPClient组件发起POST请求并发送JSON数据的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值