微服务调用(http)
微服务调用(http)
微服务可以是http的RESTful API也可以是二进制流服务等。
restful api调用演示
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;
二进制流调用演示
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;
二进制流调用url
http://localhost:1580/msgpack?service=dal
rest json调用url
http://localhost:1580/rest?service=dal
service=dal,表示调用dal微服务
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/14437065.html

浙公网安备 33010602011771号