手机淘宝api签名(sign)的算法(Java版)

 时间:2024-10-26 12:25:44

淘宝提供的sdk只支持web应用的sign计算,安卓版的sign算法暂未提供,本人自己写了个util类供大家计算淘宝api签名(sign)

工具/原料

eclipse

方法/步骤

1、自己创建一个utils包,并创建一个类,命名为TaoBao,如下图:

手机淘宝api签名(sign)的算法(Java版)

手机淘宝api签名(sign)的算法(Java版)

2、在TaoBao这个类里粘贴如下代码:publicstaticStringge隋茚粟胫tSign(Stringurl,Stringsec鸡堕樱陨ret)throwsException{ String[]urls=url.split("&"); returnSigning(urls,secret); } privatestaticStringSigning(String[]urls,Stringsecret)throwsException{ Map<String,String>params=newHashMap<String,String>(); for(inti=0;i<urls.length;i++){ Stringitem[]=urls[i].split("="); params.put(item[0],item[1]); } //第一步:检查参数是否已经排序 String[]keys=params.keySet().toArray(newString[0]); Arrays.sort(keys); //第二步:把所有参数名和参数值串在一起 StringBuilderstrBuilder=newStringBuilder(); for(Stringkey:keys){ Stringvalue=params.get(key); strBuilder.append(key).append(value); } //第三步:使用MD5/HMAC加密 byte[]bytes=encryptHMAC(strBuilder.toString(),secret); //第四步:把二进制转化为大写的十六进制 returnbyte2hex(bytes); } privatestaticbyte[]encryptHMAC(Stringdata,Stringsecret)throwsIOException{ byte[]bytes=null; try{ SecretKeysecretKey=newSecretKeySpec(secret.getBytes("UTF-8"),"HmacMD5"); Macmac=Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); bytes=mac.doFinal(data.getBytes("UTF-8")); }catch(GeneralSecurityExceptiongse){ Log.e("TB_ERR",gse.getMessage()); } returnbytes; } publicstaticStringbyte2hex(byte[]bytes){ StringBuildersign=newStringBuilder(); for(inti=0;i<bytes.length;i++){ Stringhex=Integer.toHexString(bytes[i]&0xFF); if(hex.length()==1){ sign.append("0"); } sign.append(hex.toUpperCase()); } returnsign.toString(); }

手机淘宝api签名(sign)的算法(Java版)

3、以上为sign的签名算法,调用方法如下图:以下附上代码:privatevo坡纠课柩idshowSign(){ Str足毂忍珩ingwords="要检索的关键字"; StringnowTime=sdf.format(newDate()); Stringparams="timestamp=" +nowTime +"&v=2.0&app_key=这里是你的appkey&method=这里是你调用的api地方法&partner_id=top-sdk-java-20150806&format=json&platform=2&sort=tk_total_commi&q=" +words +"&page_no=" +(page+1) +"&fields=这里是你要获取的字段内容&sign_method=hmac"; Stringurl=""; try{ url=urlPath +TaoBao.getSign(params,"这里换成你的scret") +"&timestamp="+URLEncoder.encode(nowTime,"utf-8") +"&v=2.0&app_key=这里是你的appkey&method=这里是你调用的api地方法=hmac&partner_id=top-sdk-java-20150806&format=json&platform=2&sort=tk_total_commi&q=" +URLEncoder.encode(words,"utf-8") +"&page_no="+(++page) +"&fields=这里是你要获取的字段内容"; //这里对url进行post操作,并获取结果就行了 }catch(Exceptione1){ e1.printStackTrace(); } }

手机淘宝api签名(sign)的算法(Java版)

4、到此步骤已经基本完成api的签名算法了,想要查看运行效果,右击项目,runas->androidapplication即可在手机端查看效果,如下图

手机淘宝api签名(sign)的算法(Java版)

凉拌猪皮(简单调料) 石器时代世界国际服最爱用的属主战队宠物 别克林荫大道发动机号码在什么位置 小敏和小美同时从学校出发,小敏向东走,小美向西走,5分钟后两人相距0.6千米 一汽大众怎么进行问题投诉
热门搜索
雨后的小故事图片 达摩祖师电影 图片变大 黑猫电影 色戒电影完整版