微服务调用(http)

微服务调用(http)

微服务可以是http的RESTful API也可以是二进制流服务等。

restful api调用演示

1
2
3
4
5
6
7
8
9
10
11
procedure TForm2.Button2Click(Sender: TObject);
//rest 查询
begin
  var req: TIdMultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
  req.AddFormField('cmd', IntToStr(cmd_query));
  req.AddFormField('accountno', '1');
  req.AddFormField('sql', 'select top 2 * from tunit');
  Memo1.Text := IdHTTP1.Post(FUrl2, req);  //'http://localhost:1580/rest?service=dal';
  req.Free;
  ClientDataSet1.FromJson(Memo1.Text);
end;

 二进制流调用演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm2.Button1Click(Sender: TObject);
//msgpack 查询
begin
  var pack: TMsgPack := TMsgPack.Create;
  pack.Force('cmd').AsInteger := cmd_query;                //命令字
  pack.Force('accountno').AsString := '1';                 //数据库帐套号
  pack.Force('tablenum').AsInteger := 2;                   //查几个表
  pack.Force('sql1').AsString := 'select * from tgoods';
  pack.Force('sql2').AsString := 'select * from tunit';
  var req: TBytesStream := TBytesStream.Create;
  var res: TBytesStream := TBytesStream.Create;
  pack.EncodeToStream(req);
  req.Position := 0;
  IdHTTP1.Post(FUrl, req, res); //'http://localhost:1580/msgpack?service=dal'
  pack.Clear;
  res.Position := 0;
  pack.DecodeFromStream(res);
  if pack.Force('return').AsBoolean then
  begin
    ClientDataSet1.Data := pack.Force('dataset1').AsVariant;
    ClientDataSet2.Data := pack.Force('dataset2').AsVariant;
  end
  else
    ShowMessage(pack.Force('err').AsString);
  pack.Free;
  req.Free;
  res.Free;
end; 
1
<strong>二进制流调用url</strong><br>http://localhost:1580/msgpack?service=dal <br><strong>rest json调用url</strong>
1
http://localhost:1580/rest?service=dal<br>service=dal,表示调用dal微服务

 

posted @   delphi中间件  阅读(728)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2019-02-23 支付宝签名
2012-02-23 获得客户端的信息
2012-02-23 服务器端如何防止DDOS
2012-02-23 TDSAuthenticationManager的用法
点击右上角即可分享
微信分享提示