java 调用open淘宝API
http://wiki.isv.alisoft.com/index.php/%E6%9C%8D%E5%8A%A1%E9%9B%86%E6%88%90%E5%B9%B3%E5%8F%B0
服务集群平台就不多唠叨了,去上面的文档地址去看看。我就简要的讲讲就我所知道的一些值得注意的地方:
1. 淘宝的Open API每分钟访问的次数是有限制的,好像是400次/分钟,即一个应用访问任何一个淘宝的API,一分钟内最多只能访问400次;
2. 在次数方面,除了上面的控制外,还有日访问次数控制。如果你的应用是上架的,则日访问量没有限制;如果你的应用没有上架,那么一天之内,你访问淘宝的Open API的次数累计起来不能超过1000次。不要有意见哦,人家的资源也是有限的,而且还是免费的。
3. 服务集成平台的api的安全级别分为四类:无安全策略校验;签名校验;用户授权校验(包含签名校验);可选用户授权校验(包含签名校验)。淘宝的Open API大多都是需要用户授权的。所谓用户授权就是应用软件在操作用户的淘宝数据时,就需要用户授权。如淘宝卖家在使用店铺管理软件维护自己的店铺时,淘宝网就需要淘宝卖家对该店铺软件进行授权,只有授权了,店铺管理软件才能操作淘宝卖家的数据。
4. 授权除了上面所描述的外,授权还有时效性。就是授权是有期限的,现在淘宝授权一次的最大有效时效为一个小时。如果在一个小时内,没用调用任何淘宝的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 { /** * 调用淘宝的taobao.trade.get demo, * 运行该示例时,你需要将appId,appSecret,tid * 这三个参数替换为你自己的,就可以运行该demo * * 在第一次运行时 会提醒你登录淘宝进行授权, * 授权成功后 再次运行该demo就可以获取指定交易的信息 呵呵 * * 这只是一个简单的demo,只是为初学者提供方便 * 有了这个原型 大家就可以各显自己的神通了 */ 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<String, String> params = new HashMap<String, String>(); 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); } /** * 请求淘宝Open API服务 * @param url 服务集群平台入口 * @param params 请求参数 * @return 请求结果 */ public static String requestOpenApi(String url, Map<String, String> params) { HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod(url); try { NameValuePair[] postData = new NameValuePair[params.size()]; Iterator<String> 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; } /** * 对所有参数进行签名 * @param secret APP ID对应的密钥 * @param params 请求中所有的参数 * @return 签名 */ public static String getSign(String secret, Map<String, String> 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<String> sortedKeys = new TreeSet<String>(); 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编写出有创意的应用。早日上架,早日盈利!
java 调用open淘宝API相关推荐
- 各大电商平台API调用、淘宝API。1688API宝贝、商品数据详情采集
以下是行业内了解到的一些情况.需要更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Rookie { "item&qu ...
- 淘宝API,api各种接口
测试网址:登录 - 跨境电商平台接口提供商 数据采集公司 数据接口定制服务 企业级数据服务商 最近负责的项目,需要对接淘宝提供的 淘宝api,获取淘宝客的订单数据.在此过程中遇到了很多坑,特在此mar ...
- 淘宝api,各种接口
最近负责的项目,需要对接淘宝提供的 淘宝api,获取淘宝客的订单数据.在此过程中遇到了很多坑,特在此mark一下,可能对于一些大佬来说很简单,如果发现有错误欢迎指出.所有过程如下所示: 基于Intel ...
- 淘宝API学习之道:淘宝TOP之API接口接入教程
作为一个中小型站点开发人员,淘宝API的开放大大缩短了站点的开发周期和运作效率.面对海量的数据.开发人员仅仅要细致阅读开发文档,熟悉对应的接口,就能够把数据导入自己的站点,这样就不必望洋兴叹了. 眼下 ...
- java调用淘宝api实例
淘宝api的简单调用:http://blog.csdn.net/wxwzy738/article/details/17161895 获取sessionkey : http://www.cnblogs. ...
- 淘宝api的简单调用
转载自:http://blog.csdn.net/wxwzy738/article/details/17161895 淘宝开放平台的地址:http://open.taobao.com/doc/deta ...
- 如何用代码爬抓电商数据(附淘宝API调用实例)
2019独角兽企业重金招聘Python工程师标准>>> 如何用代码爬抓电商数据(附淘宝API调用实例) http://www.21ds.cn/2190.html 转载于:https: ...
- 淘宝api开放平台SDK调用对接淘宝商品详情
以下是获得淘宝商品详情 API 返回值说明.简单调用示例. 需要更多了解和测试调用请移步 http://console.open.onebound.cn/console/?i=Turbo 如果在淘宝/ ...
- 淘宝API应用调用官方买家信息数据
公共请求参数: API请求工具 名称 类型 必须 描述 method String 是 API接口名称,例如:taobao.user.buyer.get app_key String 是 TOP分配给 ...
最新文章
- java 对变量加锁_Java最全锁剖析:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁...
- 【solr专题之三】Solr常见异常
- 35个非主流开源数据库
- 铜仁学院计算机报名,铜仁学院2012年3月全国计算机等级考试报名时间通知
- Windows系统下的python程序安装
- Java CSV操作(导出和导入)
- Qt之tcp的简单使用
- 比特币技术Base58
- python中__call__方法_Python中__call__用法实例
- [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
- 计算流体力学基础与网格概述(与书同行)——ANSYS ICEM CFD网格划分从入门到精通——丁源
- mysql切片库_Database数据库切片模式
- rtthread spiflash (w25q64)
- 如何编写android ANE
- 什么是手机证书和签名干什么用的
- MySQL数据库综合运用——快递管理系统
- 重新定义工作站的“边界”
- 【Matlab学习手记】标签显示在刻度之间
- 把握视频剪辑“节奏感”,视频剪辑其实也可以很简单
- echarts 不显示x轴与y轴 及 x 、y 轴样式自定义