调用示例

4
淘宝平台使用 REST 协议,与编程语言无关。所以只要能够封装一个符合 top 规范的 url 做一次 http 请求就可以取得淘宝的数据。 调用入口 正式环境:http://gw.api.taobao.com/router/rest 沙箱环境:http://gw.sandbox.taobao.com/router/rest 注:淘宝沙箱测试环境是淘宝开放平台(TOP)提供给独立软件开发商的测试环境。沙 箱环境模拟线上真实的淘宝环境,淘宝商家可以在沙箱环境中完全仿真测试 TOP 接口 的功能;沙箱测试环境地址:http://www.tbsandbox.com/ 系统参数介绍 名称 类型 是否必需 描述 method string Y API 接口名称 session string 可选 TOP 分配给用户的 SessionKey,如果需要访问用户隐私数据必选 timestamp string Y 时间戳,格式为 yyyy-MM-dd HH:mm:ss,例如: 2008-01-25 20:23:30淘宝 API 服务端允许客户端请求时间误差为 10 分钟(授权码 10 分钟有 效期)format string N 可选,指定响应格式。默认 xml,目前支持格式为 xml,json app_key string Y TOP 分配给应用的 AppKey v string Y API 协议版本,可选值:2.0sign string Y API 输入参数签名结果 sign_method string Y 参数的加密方法选择,可选值是:md5,hmac 签名

Transcript of 调用示例

Page 1: 调用示例

淘宝平台使用 REST 协议,与编程语言无关。所以只要能够封装一个符合 top 规范的

url 做一次 http 请求就可以取得淘宝的数据。

调用入口

正式环境:http://gw.api.taobao.com/router/rest

沙箱环境:http://gw.sandbox.taobao.com/router/rest

注:淘宝沙箱测试环境是淘宝开放平台(TOP)提供给独立软件开发商的测试环境。沙

箱环境模拟线上真实的淘宝环境,淘宝商家可以在沙箱环境中完全仿真测试 TOP 接口

的功能;沙箱测试环境地址:http://www.tbsandbox.com/

系统参数介绍

名称 类型 是否必需 描述

method string Y API 接口名称

session string 可选 TOP 分配给用户的 SessionKey,如果需要访问用户隐私数据必选

timestamp string Y

时间戳,格式为 yyyy-MM-dd HH:mm:ss,例如:2008-01-25 20:23:30。

淘宝 API 服务端允许客户端请求时间误差为 10 分钟(授权码 10 分钟有

效期)。

format string N 可选,指定响应格式。默认 xml,目前支持格式为 xml,json

app_key string Y TOP 分配给应用的 AppKey

v string Y API 协议版本,可选值:2.0。

sign string Y API 输入参数签名结果

sign_method string Y 参数的加密方法选择,可选值是:md5,hmac

签名

Page 2: 调用示例

根据参数名称将你的所有请求参数按照字母先后顺序排序:key + value .... key + value

value 对除签名和图片外的所有请求参数按 key 做的升序排列, value 无需编码。

例如:将 foo=1,bar=2,baz=3 排序为 bar=2,baz=3,foo=1

参数名和参数值链接后,得到拼装字符串 bar2baz3foo1

1 算法

系统同时支持 MD5 和 HMAC 两种加密方式

i. md5:将 secretcode 同时拼接到参数字符串头、尾部进行 md5 加密,再转化成大写,

格式 是:byte2hex (md5(secretkey1value1key2value2...secret))。

ii. hmac:采用 hmac 的 md5 方式,secret code 只在头部的签名后,再转化成大写,格式 是:

byte2hex (hmac(key1value1key2value2..., secret))。

注:hex 为自定义方法,JAVA 中 MD5 是对字节数组加密,加密结果是 16 字节,我们需要

的是 32 位的大写字符串。

2 实例

调用 API:taobao.item.get,使用系统默认 MD5 为例,因为各语言语法不一致,以下实例只体现

逻辑,使用 appkey=test appsecret=test

输入参数为:

method=taobao.item.get

timestamp=2010-06-20 17:51:30

format=xml

session=194227da7a2f0e577b999300bbfaa4a070c04

app_key=test

v=2.0

Page 3: 调用示例

fields=desc

nick=测试帐号

num_iid= 5159315527

sign_method=md5

按照参数名称升序排列

app_key=test

fields=desc

format=xml

method=taobao.item.get

num_iid= 5159315527

nick=测试帐号

session=194227da7a2f0e577b999300bbfaa4a070c04

sign_method=md5

timestamp=2010-06-20 17:51:30

v=2.0

生成sign

拼装字符串:连接参数名与参数值,并在首尾加上app_secret(这里假设appsecret=test)值:

testapp_keytestfieldsdescformatxmlmethodtaobao.item.getnum_iid5159315527nick

测试帐号

session194227da7a2f0e577b999300bbfaa4a070c04sign_methodmd5timestamp201

0-06-20 17:51:30v2.0test

得到32位大写MD5值: 4216F8C43B501B889A823BB9E2797EEF

Page 4: 调用示例

发送 http 请求

拼装 URL: 将所有参数值转换为 UTF-8 编码,然后拼装

http://gw.api.taobao.com/router/rest?app_key=test&fields=desc&format=xml&method

=taobao.item.get&num_iid=5159315527&nick=hz0799&session=194227da7a2f0e57

7b999300bbfaa4a070c04&sign=4216F8C43B501B889A823BB9E2797EEF

&timestamp=2010-06-20+17%3A51%3A30&v=2.0

注意事项

所有的请求和响应数据编码皆为 utf-8 格式,url 里的所有参数值请做 urlencode 编码。如果

请求的 Content-Type 是 application/x-www-form-urlencoded, http body 里的所有参数值

也做 urlencode 编码;如果是 multipart/form-data 格式,每个表单字段的参数值无需编码,

但每个表单字段的 charset 部分需要指定为 utf-8