Delphi调用http-Post服务

方法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;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值