淘宝Open API初学者入门教程

1.淘宝Open API每分钟访问的次数是有限制的,好像是400次/分钟,即一个应用访问任何一个淘宝API,一分钟内最多只能访问400次;

2.在次数方面,除了上面的控制外,还有日访问次数控制。如果你的应用是上架的,则日访问量没有限制;如果你的应用没有上架,那么一天之内,你访问淘宝Open API的次数累计起来不能超过1000次。不要有意见哦,人家的资源也是有限的,而且还是免费的。

3.服务集成平台的api的安全级别分为四类:无安全策略校验;签名校验;用户授权校验(包含签名校验);可选用户授权校验(包含签名校验)。淘宝Open API大多都是需要用户授权的。所谓用户授权就是应用软件在操作用户的淘宝数据时,就需要用户授权。如淘宝卖家在使用店铺管理软件维护自己的店铺时,淘宝网就需要淘宝卖家对该店铺软件进行授权,只有授权了,店铺管理软件才能操作淘宝卖家的数据。

4.授权除了上面所描述的外,授权还有时效性。就是授权是有期限的,现在淘宝授权一次的最大有效时效为一个小时。如果在一个小时内,没用调用任何淘宝Open API,则授权过期了,需要重新授权。而对于未上架的应用,授权时效内不管有没有调用淘宝Open API,授权期限过后就需要重新授权。看来,上架的应用还是有相当大的空间优势。

其他的就不多唠叨了,还没有在阿里软件注册应用的,还得先去阿里软件平台注册一个应用,注册成功后,你会得到APP ID及CERT CODE。其中APP ID是用来标记应用,即你注册应用的ID,CERT CODE则是你应用的密钥,在做签名时用。

下面直接来个demo,感受下淘宝的Open API。我们调用交易类的taobao.trade.get为例,该api文档地址为:http://isp.alisoft.com/apidoc/api/apiIndex.html#isp_taobao-6-281 。可以知道这个api是用户授权,即需要用户授权才可以访问该用户的交易信息。

源代码如下:

复制代码
  
  
package org.openapi.taobao; import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; public class TaobaoOpenApiDemo { public static void main(String[] args) { // 淘宝Open API平台即SIP平台的入口 String sipRequestUrl = "http://sip.alisoft.com/sip/rest" ; String appId = "****"; // 在阿里软件平台注册的应用ID,请使用你自己的应用ID String appSecret = "******"; // 注册的应用的密钥,请使用你自己应用的密钥 String taobaoApiName = "taobao.trade.get"; // 交易类api String sessionId = "1234567";// sessionId是isv应用自己生成的字符串 //确保每个使用该应用的用户各自的sessionId各不相同 SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ); Map params = new HashMap(); params.put("sip_appkey" , appId); params.put("sip_apiname" , taobaoApiName); params.put("sip_timestamp", formater.format(new Date())); params.put("sip_sessionid" , sessionId); params.put("fields", "seller_nick,buyer_nick,title,type,created,sid" ); params.put("tid", "******"); //请设置你要查询的交易号 params.put("format", "xml" ); params.put("v", "1.0" ); params.put("sip_sign" , getSign(appSecret, params)); String result = requestOpenApi(sipRequestUrl, params); if (result != null && result.startsWith("sip_isp_loginurl:" )) { result = result.replaceAll("&", "&" ); System.out.println("打开浏览器,访问下面的URL进行用户授权,授权成功后" + ",再次运行该类就可以调用api获取交易信息" ); System.out.println(result.substring("sip_isp_loginurl:" .length())); } else if (result != null ) System.out.println(result); } public static String requestOpenApi(String url, Map params) { HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod(url); try { NameValuePair[] postData = new NameValuePair[params.size()]; Iterator iters = params.keySet().iterator(); int i = 0 ; while (iters.hasNext()) { String key = (String) iters.next(); postData[i] = new NameValuePair(key, params.get(key).toString()); i++ ; } postMethod.setRequestBody(postData); client.executeMethod(postMethod); String resultCode = postMethod.getResponseHeader("sip_status" ) .getValue(); if (resultCode == null || ("" .equals(resultCode))) return null ; else if ("1004" .equals(resultCode)) return "sip_isp_loginurl:" + postMethod.getResponseHeader("sip_isp_loginurl" ) .getValue(); else if (!"9999" .equals(resultCode)) return resultCode + ":" + postMethod.getResponseHeader("sip_errormessage" ) .getValue(); return postMethod.getResponseBodyAsString(); } catch (Exception ex) { ex.printStackTrace(); } finally { if (postMethod != null ) postMethod.releaseConnection(); } return null ; } public static String getSign(String secret, Map params) { if (secret == null || "".equals(secret) || params == null ) throw new RuntimeException( "secret or params is null or blank, please check" ); StringBuilder sb = new StringBuilder().append(secret); String result = null ; try { Set sortedKeys = new TreeSet(); sortedKeys.addAll(params.keySet()); for (String key : sortedKeys) sb.append(key).append(params.get(key)); MessageDigest md = MessageDigest.getInstance("MD5" ); result = byteTohex(md.digest(sb.toString().getBytes("utf-8" ))); } catch (Exception e) { throw new RuntimeException(e); } return result; } public static String byteTohex(byte [] b) { StringBuffer sb = new StringBuffer(); String stmp = "" ; for (int n = 0; n < b.length; n++ ) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF )); if (stmp.length() == 1 ) sb.append("0" ).append(stmp); else sb.append(stmp); } return sb.toString().toUpperCase(); } }
复制代码

 

上面短短的100多行代码只是向初学者展示如何使用淘宝Open API服务。从代码也可以看到,基于rest的Open API的确使用起来相当的方便。当然,要想使用好淘宝Open API,还得好好的阅读淘宝Open API文档。同时,还需打开自己的思维,使用淘宝Open API编写出有创意的应用。早日上架,早日盈利!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值