方法1:
procedure TForm1.btn_postClick(Sender: TObject);
var
IdHttp:TIdHTTP;
url,s_code,s_message,s_detailMessge,s_body:string;
RequestStream:TStringStream;
ResponseStream:TStringStream;
RequestStr,ResponseStr:string;
j_in,j_out: ISuperObject;
begin
//创建IdHttp控件
IdHttp:=TIdHTTP.Create(nil);
//初始化TStringStream对象(请求)
RequestStream:=TStringStream.Create('');
//初始化TStringStream对象(返回)
ResponseStream:=TStringStream.Create('');
try
url:= 'http://192.168.50.91:8000/app-emr-tjeye/emrsso/getSignLoginData';
try
//组织入参
j_in := SO();
j_in.S['publickey'] := 'XXXX'; //集成公钥
j_in.S['orgId'] := '40135433-6'; //医疗机构编码
j_in.S['deptCode'] := '6'; //当前科室 code 或病区 code
j_in.S['userId'] := 'wpd'; //当前用户登录名
RequestStr := j_in.AsString;
RequestStream.WriteString(AnsiToUtf8(RequestStr)); //【编码规范】 AnsiToUtf8必须写
//调用接口
IdHttp.HTTPOptions := IdHttp.HTTPOptions + [hoKeepOrigProtocol]; //必须有这行才使设置协议版本生效
IdHTTP.Request.Accept := 'application/json';
IdHTTP.Request.ContentType := 'application/json';
IdHTTP.Request.ContentEncoding := 'utf-8';
IdHttp.Post(url,RequestStream,ResponseStream); //发送请求
//处理出参
ResponseStr := ResponseStream.DataString; //获取返回结果
ResponseStr := UTF8Decode(ResponseStr); //返回结果 【编码规范】 UTF8Decode必须写
j_out := SO(ResponseStr);
s_code := j_out.S['code']; //状态码,2000 为成功
s_message := j_out.S['message']; //信息
s_detailMessge:= j_out.S['detailMessge']; //详细信息
s_body := j_out.S['body']; //密文(步骤 3 所需 sign)
if s_code <> '2000' then
begin
ShowMessage('获取密文失败:'+s_message);
end;
except
on e:exception do
begin
ShowMessage('异常:'+e.message);
Exit;
end;
end;
finally
if Assigned(IdHttp) then
FreeAndNil(IdHttp);
if Assigned(RequestStream) then
FreeAndNil(RequestStream);
if Assigned(ResponseStream) then
FreeAndNil(ResponseStream);
end;
end;
方法2:
procedure TForm1.btn3Click(Sender: TObject);
var
sinputxml,soutputxml:string;
ihttp: TIdHTTP;
inputxml: TStringList;
begin
ihttp := TIdHTTP.Create(nil);
inputxml := TStringList.Create;
try
ihttp.ProtocolVersion := pv1_1;
sinputxml := memo1.text;
inputxml.Add('xml=' + UTF8Encode(sinputxml));
soutputxml := ihttp.Post('http://172.16.52.72:8888/home/services', inputxml);
memo2.text := Utf8ToAnsi(soutputxml);
finally
FreeAndNil(ihttp);
FreeAndNil(inputxml);
end;
end;