淘宝Open API开放将近一年了,越来越多的人(包括已工作的和在校的大学生)都在使用淘宝的Open API,有不少ISV应用已上架盈利了。本文作为一篇教程,给大家做启发式教育。

我也运用淘宝Open API也大半年了。不过了,因为阿里软件的文档比较的乱,让许多初学者分不清条理(注:淘宝Open API是敞开在阿里软件的一个渠道上,是什么服务集群渠道吧)。当然了,在我国,能够将自己的服务资源敞开出来给第三方运用,特别是淘宝网这种大型商业网站来说,阿里巴巴的这种共享精力和敞开的胸襟仍是令人敬服的。因此在运用Open API过程中,咱们假如觉得材料不是很充沛,也不要过多的诉苦,敞开的一起意味着职责。呵呵!

淘宝Open API初学者入门教程(淘宝开放API)  API 入门教程 第1张

在这了,趁端午节放假,将我运用淘宝Open API的心得共享出来,先写一篇简略的入门教程,也算是共享和敞开吧。

经过阅览阿里软件供给的文档,咱们对怎么调用淘宝Open API有了根本的了解。阿里软件Open API渠道即服务集成渠道SIP相关的文档链接如下(在运用SIP渠道上的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.授权除了上面所描绘的外,授权还有时效性。便是授权是有期限的,现在淘宝授权一次的***有用时效为一个小时。假如在一个小时内,没用调用任何淘宝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 {

/**

* 调用淘宝的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 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);

}

/**

* 恳求淘宝Open API服务

* @param url 服务集群渠道进口

* @param params 恳求参数

* @return 恳求成果

*/

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;

}

/**

* 对一切参数进行签名

* @param secret APP ID对应的密钥

* @param params 恳求中一切的参数

* @return 签名

*/

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编写出有构思的运用。提前上架,提前盈余!

假如我们有什么问题,能够回复本贴,有问必答。我们彼此讨论,共同进步。呵呵!

【修改引荐】

  1. 助推Silverlight 微软与淘宝协作“亮光店肆”
  2. SaaS开发入门 阿里软件渠道HelloWorld开发实例
  3. 微软Silverlight技能 亮光淘宝
  4. 阿里软件投10亿全面进军管理软件商场
  5. SaaS开发入门 阿里软件渠道HelloWorld开发实例
转载请说明出处
知优网 » 淘宝Open API初学者入门教程(淘宝开放API)

发表评论

您需要后才能发表评论