delphi中实现http请求和提交

在对接本地的一个药械监管系统使用实现的代码,编译环境delphi Xe7 ,使用类TIdHTTP实现网络的get请求和post提交

//设置组件的属性
procedure TfrmMain.SetHttpParam;
begin
  idhtp1.HandleRedirects := True; // 允许头转向
  idhtp1.ReadTimeout := 10000;
  idhtp1.Request.ContentType := 'application/x-www-form-urlencoded';
  idhtp1.Request.CustomHeaders.Clear;
  idhtp1.Request.ContentEncoding := 'utf-8';
  idhtp1.Request.CharSet := 'utf-8';
  idhtp1.Request.AcceptLanguage := 'zh-CN,en,*';
  idhtp1.Request.UserAgent := 'Windows';
  idhtp1.Request.Connection := 'Keep-Alive';
end;

//get请求用例
procedure TfrmMain.btn_GetClick(Sender: TObject);
var
  aStream: TStringStream;
  apiName, url: string;
  // joInfo, joSub: ISuperObject;
begin
  apiName := spr_ApiUrl + '/sm-web/api/udi/getUDI';
  aStream := TStringStream.Create('', TEncoding.UTF8);
  getSign;
  url := apiName + '?currentPage=1&TYSHXYDM=' + spr_companyId
    + '&accessToken=' + spr_Sign
    + '&timestamp=' + spr_TimeStamp;
  try
    idhtp1.get(url, aStream);
    aStream.Position := 0;
    mmo_Mess.Lines.Clear;
    mmo_Mess.Lines.Add(aStream.DataString);
  finally
    aStream.Free;
  end;
end;

//post请求用例
procedure TfrmMain.btn_PostClick(Sender: TObject);
var
  sl: TStringList;
  aStream: TStringStream;
  url: string;
begin
  url := spr_ApiUrl + '/sm-web/api/biz/add_commodity_stock'; 
  aStream := TStringStream.Create('', TEncoding.UTF8);
  sl := TStringList.Create;
  try
    sl.Add('company_id=' + spr_companyId);
    sl.Add('sign=' + spr_Sign);
    sl.Add('timestamp=' + spr_TimeStamp);
    sl.Add('common_name=人工合成蛋白');
    sl.Add('commodity_name=人工合成蛋白');
    sl.Add('size=50mg/盒');
    sl.Add('unit=盒');
    sl.Add('approval_no=XR203397446488');
    sl.Add('manufacturer_name=济南泰森制药');
    sl.Add('num=10');
    sl.Add('batch_no=20230601X');
    sl.Add('manufacture_date=2022-01-30');
    sl.Add('expiry_date=2026-12-31');
    sl.Add('in_storage_date=2023-06-01 00:00:00');
    sl.Add('customer_name=临沂华瑞医药公司');
    sl.Add('repertory_name=01');
    sl.Add('goodseat_no=01');
    sl.Add('base_id=1');
    sl.Add('upload_type=add');
    idhtp1.Post(url, sl, aStream);
    aStream.Position := 0;
    mmo_Mess.Text := aStream.DataString;
  finally
    sl.Free;
    aStream.Free;
  end;
end;

 

posted @ 2024-03-30 11:13  lybingyu  阅读(176)  评论(0编辑  收藏  举报