Delphi对接快递单的md5函数
程序员文章站
2022-03-03 08:19:17
对接快递单每个快递商家的接口都不同,但基本大同小异,主要的算法都是md5 和Base64。一般提供的Demo都不会有Delphi的。其实md5和Base64Delpi都自带了。 base64一般都不会有问题,主要是md5,很多用Delphi对接的,主要的问题都是出在这里。下面我分享对接两个不同快递接 ......
对接快递单每个快递商家的接口都不同,但基本大同小异,主要的算法都是md5 和base64。一般提供的demo都不会有delphi的。其实md5和base64delpi都自带了。
base64一般都不会有问题,主要是md5,很多用delphi对接的,主要的问题都是出在这里。下面我分享对接两个不同快递接口,用到的md5处理都不同。
procedure tform1.speedbutton1click(sender: tobject);
var
str:string;
m5str,basestr:ansistring;
begin
str:=stringreplace(trim(edit1.text),' ','',[rfreplaceall]);
memo1.lines.add('原文'+str);
m5str:=thashmd5.gethashstring(str);
memo1.lines.add('md5:'+m5str);
memo1.lines.add('qdac,url:'+qstring.urlencode(str,false,true));
memo1.lines.add('tnet,url:'+turlencoding.url.encode(str));
basestr:=tnetencoding.base64.encode(m5str);
memo1.lines.add('base64(md5):'+basestr);
memo1.lines.add('qdac,url(base64(md5)):'+qstring.urlencode(basestr,true,true));
memo1.lines.add('tnet,url(base64(md5)):'+tnetencoding.url.encode(basestr));
end;
procedure tform1.speedbutton2click(sender: tobject);
var
md5: tidhashmessagedigest5;
base64: tidencodermime;
smd5:tidbytes;
str:string;
fstr:ansistring;
amd5:tbytes;
mstream,ostream:tmemorystream;
begin
memo1.lines.clear;
mstream:=tmemorystream.create;
ostream:=tmemorystream.create;
str:='<order></order>123456';
amd5:=thashmd5.gethashbytes(str);
var s:=tnetencoding.base64.encodebytestostring(amd5);
memo1.lines.add('tnetencoding.base64.encodebytestostring:'+s);
memo1.lines.add('urlencode:'+qstring.urlencode(s,true,true));
md5 := tidhashmessagedigest5.create;
base64 := tidencodermime.create(nil);
try
base64.fillchar := '=';
smd5:=md5.hashstring(str);
memo1.lines.add(base64.encodebytes(smd5));
finally
base64.free;
md5.free;
end;
如果你在用delphi对接其他的快递接口的时候,如果有问题用这两个的其中一个应该就没有问题
上一篇: 支持正则表达式更名的命令行工具