淘宝 TOP 平台Open API入门篇

[未经本人许可 严禁转载]

前不久刚写了一篇关于淘宝Open API的入门教程,具体见http://blog.csdn.net/hereweare2009/archive/2009/05/28/4222625.aspx ,今天刚刚得知,淘宝也发布了自己的平台---Taobao Open Platform,简称TOP平台。此前淘宝的Open API是通过alisoft的SIP平台对外开放的。具体的TOP信息去官网看看,http://open.taobao.com/ 。我也没仔细看,我比较急切,我就直接在我上一篇的Blog的代码上,尝试改造走TOP平台调用,整个过程不到10分钟,也许俺对alisoft的SIP机制比较清楚吧。我个人觉得整个调用过程基本上和alisoft的SIP没啥区别,呵呵!

TOP的OpenAPI与alisoft的SIP一样,分为三类:apiType=1表示调用时需要ISV(第三方开发者)签名和认证;apiType=2表示调用时需要ISV签名和认证,同时需要用户授权确认;apiType=3表示:调用时需要ISV签名和认证,可选用户授权确认(授权后可获取公开信息) 。taobao.user.get是属于可选用户授权。未经用户授权只能获得用户的公开信息。整个过程与SIP不同的是Session的生成,具体见:http://wiki.open.taobao.com/index.php/%E5%A6%82%E4%BD%95%E5%8F%96%E5%BE%97session%EF%BC%9F ,下面代码有说明。其它的我啥也不懂,也不罗嗦了,直接贴代码:

import java.io.IOException;

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.TreeMap;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

import sun.misc.BASE64Decoder;

/**

* TOP Open API开发实例

* 今天得知淘宝TOP平台发布

* 发了几分钟时间 将上次alisoft 平台的demo改了下

* 测试一把,呵呵 alisoft的SIP调用见上一篇Blog:

* http://blog.csdn.net/hereweare2009/archive/2009/05/28/4222625.aspx

*/

public class TOPDemo {

public static void main(String... args)

{

String TopUrl = "http://gw.sandbox.taobao.com/router/rest?";

//组装请求参数

TreeMap<String, String> apiparamsMap = new TreeMap<String, String>();

apiparamsMap.put("method", "taobao.user.get");

//关键是获取session,先请求授权URL:http://open.taobao.com/isv/authorize.php?appkey=alipublic01

// 就会获得淘宝TOP授权码,点复制按钮,复制授权码,

// 再访问http://container.sandbox.taobao.com/container?authcode=授权码

// 将上面的“授权码”替换出刚才授权的授权码,请求该url,则在结果中top_session即为所要的结果

apiparamsMap.put("session", "*****");//替换为你自己的session

apiparamsMap.put("api_key", "alipublic01");//我使用的是测试帐号alipublic01

apiparamsMap.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

apiparamsMap.put("v", "1.0");

apiparamsMap.put("fields", "created,nick,sex,location,buyer_credit.level,last_visit");

apiparamsMap.put("nick", "tbtest520");

String sign = sign(apiparamsMap, "test");//alipublic01的密钥是test

apiparamsMap.put("sign", sign);

// 向TOP平台测试环境发起调用

System.out.println(requestTOPApi(TopUrl, apiparamsMap));

}

/**

* 请求淘宝TOP平台OpenAPI服务

* @param url TOP平台入口

* @param params 请求参数

* @return 请求结果

*/

public static String requestTOPApi(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);

return postMethod.getResponseBodyAsString();

} catch (Exception ex) {

ex.printStackTrace();

} finally {

if (postMethod != null)

postMethod.releaseConnection();

}

return null;

}

private static String byte2hex(byte[] b) {

StringBuffer hs = new StringBuffer();

String stmp = "";

for (int n = 0; n < b.length; n++) {

stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));

if (stmp.length() == 1)

hs.append("0").append(stmp);

else

hs.append(stmp);

}

return hs.toString().toUpperCase();

}

/**

* 把经过BASE64编码的字符串转换为Map对象

*/

public static Map<String, String> convertBase64StringtoMap(String str) {

if (str == null)

return null;

BASE64Decoder decoder = new BASE64Decoder();

String keyvalues = null;

try {

keyvalues = new String(decoder.decodeBuffer(str));

} catch (IOException e) {

// log.error(str + "不是一个合法的BASE64编码字符串");

return null;

}

if (keyvalues == null || keyvalues.length() == 0)

return null;

String[] keyvalueArray = keyvalues.split("&");

Map<String, String> map = new HashMap<String, String>();

for (String keyvalue : keyvalueArray) {

String[] s = keyvalue.split("=");

if (s == null || s.length != 2)

return null;

map.put(s[0], s[1]);

}

return map;

}

/**

* 签名方法,用于生成签名。生成签名的描述见注3

*

* @param params

*            传给服务器的参数

* @param secret

*            分配给您的APP_SECRET

*/

private static String sign(TreeMap<String, String> params, String secret) {

String result = null;

if (params == null)

return result;

Iterator<String> iter = params.keySet().iterator();

StringBuffer orgin = new StringBuffer(secret);

while (iter.hasNext()) {

String name = (String) iter.next();

orgin.append(name).append(params.get(name));

}

try {

MessageDigest md = MessageDigest.getInstance("MD5");

result = byte2hex(md.digest(orgin.toString().getBytes("utf-8")));

} catch (Exception ex) {

throw new java.lang.RuntimeException("sign error !");

}

return result;

}

}

执行结果如下:

<?xml version="1.0" encoding="utf-8" ?>

<rsp>

<user>

<buyer_credit><level>0</level></buyer_credit>

<created>2008-03-09 02:19:35</created>

<last_visit>2009-04-16 14:57:14</last_visit>

<location>

<city><![CDATA[杭州]]></city>

<state><![CDATA[浙江]]></state>

</location>

<nick><![CDATA[tbtest520]]></nick>

<sex><![CDATA[m]]></sex>

</user>

</rsp><!--xvm169.sqa-->

永久链接: http://blog.csdn.net/hereweare2009/archive/2009/06/22/4290239.aspx

--EOF--

淘宝 TOP 平台Open API入门篇相关推荐

  1. SN-TOP架构的初步探讨——谈淘宝TOP平台的升级

    SN-TOP架构的初步探讨 --谈淘宝TOP平台的升级 文章全文将于12月10日发布,敬请关注!

  2. 如何快速对接淘宝开放平台API接口(淘宝店铺订单明文接口,淘宝店铺商品上传接口,淘宝店铺订单交易接口)

    很多电商系统的需求场景,都面临淘宝开放平台的接入,但这也是让不少开发者头疼的问题. 那么,如果快速接入呢?东哥的对接经验相信可以帮到不少开发者,快速接入.少走弯路. 1.公共参数 名称 类型 必须 描 ...

  3. 关于淘宝开放平台API的session失效问题解决

    前几天发现淘宝开放平台API突然无法调用了,一直在提示出错,提示的错误信息为:Invalid session. 众所周知淘宝开放平台的API接口调用需要三个Key:appKey(合作方标识), sec ...

  4. 淘宝开放平台php-sdk测试

     今天想使用淘宝开放平台的API获取商品详情,可是以前一直没使用过,看起来有点高深莫测,后然看开发入门,一步一步,还真有点感觉了,然后看示例,还真行了,记下来以后参考.其中遇到问题,后然解决了. 因为 ...

  5. 关于淘宝开放平台的战略规划

    关于淘宝开放平台的战略规划 --知识产权保护,若需引用,请注明来源. 需要回答的三大问题: 1)  淘宝开放平台怎么发展? 2)  淘宝开放平台究竟在什么模式下才能突破? 3)  淘宝开放平台博客大赛 ...

  6. 淘宝TOP程序API接口接入教程--入门篇

    作为一个中小型网站开发者,淘宝API的开放大大缩短了网站的开发周期和运作效率,面对海量的数据,开发者只要仔细阅读开发文档,熟悉相应的接口,就可以把数据导入自己的网站,这样就不必望洋兴叹了. 目前淘宝T ...

  7. 淘宝API学习之道:淘宝TOP之API接口接入教程

    作为一个中小型站点开发人员,淘宝API的开放大大缩短了站点的开发周期和运作效率.面对海量的数据.开发人员仅仅要细致阅读开发文档,熟悉对应的接口,就能够把数据导入自己的站点,这样就不必望洋兴叹了. 眼下 ...

  8. 关于淘宝API的详细说明(淘宝开放平台API揭秘)

    自淘宝开放平台Beta公测开始,陆续开放了上百次个API,这些API涵盖了淘宝基本业务,截止发日志当天开放平台API每天的调用量可是说是天文数字. 作为TOP开发者的您对 于淘宝平台-API可以信手拿 ...

  9. 淘宝开放平台API族

    淘宝作为电子商务市场的超级航母,在电子商务基础服务领域,经过多年的沉淀和革新,围绕电子商务生态链的持续整合,形成了以营销.支付.物流和售后为核心的基础服务体系. 淘宝是一个电子商务的江湖,从整合核心的 ...

最新文章

  1. 13-flutter 加载图片
  2. Lispbox的简单配置
  3. 位bit、字节byte、kb、mb
  4. Python 中的 os 模块常见方法?
  5. postgresql 怎么读_大数据采集和抽取怎么做?这篇文章终于说明白了!
  6. sqlite java_如何在Java中使用Sqlite
  7. 【BZOJ1196】公路修建问题,二分+最小生成树
  8. wpf button无边框_中国式新房无玄关?客厅真不缺这点面积!
  9. 火车票放票时间 潜规则
  10. 数据库系统:NoSQL与SQL的区别
  11. 数字电路课程设计--电子钟实验报告
  12. 简单实现DButil工具类
  13. 阿里月薪6W招程序员,看到要求我傻眼了!
  14. 在使用百度地图API时,浏览器报错
  15. css3中的属性选择器以及新增伪类
  16. 信息安全工程第四章网络安全体系与网络安全模型要点小结
  17. Erlang开源20周年:这门编程语言见证了互联网的技术成长
  18. 贪心算法or背包问题
  19. C#迭代器的详细用法
  20. ros ubuntu 卸载_ROS安装与卸载

热门文章

  1. 从2G到5G, 基站天线过去与未来
  2. redis(二)使用redis工具类
  3. 计算机组成(超详细)+附带思维导图
  4. 报名照片太大怎么压缩?压缩图片到固定大小的方法
  5. 红帽扩展存储系列产品市场分销路线
  6. 20171001-构建之法:现代软件工程-阅读笔记2
  7. 温度报警程序c语言设计,单片机温度报警器与时钟显示C程序和原理图
  8. ionic4-ts 字符串中获取汉字与去掉汉字
  9. 西澳推出两大创新型住宅太阳能加存储项目
  10. win8 64 mysql下载教程_windows下安装mysql-8.0.18-winx64的教程(图文详解)