首页 > 其他分享 >delphi 第一次接触与配置接口

delphi 第一次接触与配置接口

时间:2023-11-22 15:22:24浏览次数:32  
标签:postData timestamp delphi 接触 接口 sign appid HttpClient

首先说明一下,这是我平生第一次接到 接口文档,认知有限,写得不对的地方,请大佬们多多指点.

下面是一个智能刀具柜关于库存查询的接口文档:

 上面的参数中,appid 和 sign中的appsecret和macno是设备的常量值,要问设备服务商给.

上面的接口要分别设置header头和请求参数.而POST提交的地址是:请求地址(图1打码部分)+接口的请求路径(/api/external/record/getStock).我以TNetHTTPClient控件为例来配置这个接口.

第一部从服务商那里获得appid 和appsecret后,写出sign的计算函数(sign string 签名: md5(appid+timestamp+appsecret))

uses
IdHashMessageDigest;

function Calcsign(appid, timestamp, appsecret: string): string; // MD5加密
var
  md5: TIdHashMessageDigest5;
begin
  md5 := TIdHashMessageDigest5.Create;
  try
    //这里一定要转成小写
    Result := lowercase(md5.HashstringAsHex(appid + timestamp + appsecret));
  finally
    md5.Free;
  end;
end;

然后是配置接口

procedure TForm1.Button1Click(Sender: TObject);
var
  HttpClient: TNetHTTPClient;
  Response: IHTTPResponse;
  appid, timestamp, sign, url: string;
  postData: TStringList;
begin
  appid := '99999';    //服务商会提供
  timestamp := IntToStr(DateTimeToUnix(Now, false));
  sign := Calcsign(appid, timestamp, 'XXXXX');    //MD5加密.其中第三个参数服务商会提供
  url := '接口的提交地址';    //这里的地址被我改掉了
  HttpClient := TNetHTTPClient.Create(nil);
  // header参数设置
  HttpClient.CustomHeaders['appid']:= appid;
  HttpClient.CustomHeaders['timestamp']:= timestamp;
  HttpClient.CustomHeaders['sign']:= sign;
  Httpclient.ContentType := 'application/x-www-form-urlencoded;';
// POST参数 
  postData := TStringList.Create;
  postData.AddPair('macno', 'xxxxx');//其中第二个参数服务商会提供
postData.AddPair('goods_code', '004.202'); //要查询库存的编码
{$IFDEF MSWINDOWS} // 检查操作系统版本为 Windows 7 (DELPHI WIn7下使用 NetHttpClient 请求HTPPS 网站 - 一曲轻扬 - 博客园 (cnblogs.com))
if (Win32MajorVersion = 6) and (Win32MinorVersion = 1) then
HttpClient.SecureProtocols := [THTTPSecureProtocol.TLS12];
{$ENDIF}
try 
Response := HttpClient.Post(url, postData);
Memo1.Lines.Text := Response.ContentAsString; //把返回的数据体现出来,你也可以保存成文件.
//接下来你可能需要把数据洗一下才能使用,因为它返回的是json的格式
finally
HttpClient.Free;
postData.Free;
end;
end;
//返回的数据
{"code":1,"msg":"success","time":"1700637003","data":[{"machine_name":"xx智能刀具柜","machine_number":1,"data":[{"goods_code":"004.202","goods_name":"004.202\/涂层燕尾刀D1.0*A90*C5*D4*2F*50L\/支","stock_number":"0"}]}]}

 

标签:postData,timestamp,delphi,接触,接口,sign,appid,HttpClient
From: https://www.cnblogs.com/yoooos/p/17849100.html

相关文章

  • 接口优化技巧
    大家好,最近看到京东云的一位大佬分享的接口优化方案,感觉挺不错的,拿来即用。建议收藏一波或者整理到自己的笔记本中,随时查阅!下面是正文。一、背景针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一......
  • DELPHI WIn7下使用 NetHttpClient 请求HTPPS 网站
    转载自:WIn7下使用NetHttpClient请求HTPPS网站-EEEEEEEEEEEEEEEEEEE-博客园(cnblogs.com)WIn7下使用NetHttpClient请求HTPPS网站在WIN7下使用HttpClient会报以下两种错;1ServerCertificateInvalidornotpresent2Errorsendingdata:(12175)发生了安......
  • 如何定义Sping上传文件的接口
    我直接通过拓云智能AI搜索获得了如下的答案。避免了花费太长时间也找不到直接答案。--现在百度广告太多了...在Spring中,通过定义Controll层,来实现接口,上传文件比较特殊,需要注意的点:可以使用@PostMapping注解来定义上传音频文件的接口使用MultipartFile类来接受前端上传......
  • wxid批量转换微信号接口工具,自动转换二维码,开源API分享!
    这个是今天客户定制的,就是从微信群导出了很多WXID,然后实现通过WXID加好友,我就直接调用了微信的接口,说明一下这是微信公开的接口,不存在HOOK或者是逆向技术存在的,公开接口,任何人都可以调用,我就是把接口通过易语言实现了批量生成的功能效果。界面图:  WXID添加效果,不是微信号,是......
  • springboot移动端授权登录请求接口说明
    使用系统内部演示代码,在附件下载方便统一管理用户方便在线用户监控一处编写、处处可用统一鉴权方式1.新增角色、用户组【若已分配可跳过】角色管理-新增专门用于移动等模块-不分配任何后台菜单【DZDS已有】2.新增、修改用户在业务模块添加、修改用户信息,需要同步到sys_user中......
  • Java单列集合Set:HashSet与LinkedHashSet详解,为什么它比List接口更严格?
    上篇我们介绍了单列集合中常用的list接口,本篇我们来聊聊单列集合中的另外一个重要接口Set集合。1、Set介绍java.util.Set接口和java.util.List接口一样,同样实现了Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口......
  • 在利用biopython请求生信数据库接口时,如何添加HTTP代理
    如果你使用Biopython来请求生物信息学数据库接口,并且需要通过HTTP代理进行访问,你可以使用urllib库来设置代理。以下是一个示例代码,展示了如何在Biopython中添加HTTP代理:fromurllibimportrequest#设置代理服务器的地址和端口proxy=request.ProxyHandler({'http':......
  • 微信附近人wxid采集工具,可通过QQ附近人提取转换,易语言版接口代码
    这个调用的是一个POST接口,我用fiddler抓取的,并非是逆向或者是破解奥,是正常公开的接口,我只是对数据对了一些编码转换和整理,可以提取附近人的数据包,然后通过数据包可以直接加微信,就这么简单,但是还是存在一些技术原理,ck是我自己账号的我就不提供了。框架设计界面: 数据包可以直接......
  • qq附近人提取脚本插件,微信wxid附近人提取接口工具,易语言代码分享,POST方式学习教程
    其实打开Qq附近人后它会返回一个数据包我们只需要把这个数据包提取解析出来就可以提取对方的wxid或者是QQ号,通过这个WXID还能直接加好友,而且是免费的接口,我今天把基础源码和案例图发给大家,免费分享,没有HOOK也没有逆向,就抓包实现的,正常逻辑哈,并非是违规开发。框架图:  转换后......
  • 2023-11-21 托管第三方开发的小程序如何加急发布?==》需要调用微信提供的接口去发布
    接口地址:https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/code-management/speedupCodeAudit.html 你可以在这里调试:https://developers.weixin.qq.com/apiExplorer?apiName=startPushTicket&plat=thirdparty 注:审核单id为你提......