自动化SDK使用指南
一、新SDK的介绍
淘宝开放平台最新的SDK是由程序通过API的结构、业务数据等自动化生成的代码包,目前支持主流的三种语言版本(java、php、)。是淘宝开放平台为了减少广大开发者使用API的开发成本而提供的一种开发工具包,其中包含了已经开放的API的请求、加密、返回解析等一些必要的功能(目前java sdk支持1.5及以上 sdk支持 2.0及以上php sdk支持php5及以上
二、为什么要使用最新的SDK
最新的自动化SDK区别之前的版本(前期为人工手写的代码),有着以下多种优势:
1、SDK代码全自动化生成,完全和对外公开的API文档一致
2、自动化生成,避免人工编写产生的Bug
3、在每次API升级发布后,会及时自动升级各语言SDK版本,并向下保持兼容
4、SDK提供了一些基本协议级的封装,提高API访问成功率
5、错误日志自动打印,错误发生时可完全收集现场数据
三、如何使用最新的SDK
1、新SDK的目录结构
JAVA SDK目录结构
目前行的php开发工具有
功能
1
com.taobao.api.domain
API相关的数据结构包
2
com.quest
API的请求参数封装类
3
com.sponse
API的返回结果封装类
4
com.taobao.api.internal
SDK内部调用工具类,不保证以后升级不发生变化,不建议用户直接使用
5
com.taobao.api
SDK的入口类,如:DefaultTaobaoClient
.
NET SDK目录结构
目录(命名空间)
功能
1
Top.Api.Domain.*
API相关的数据结构包
2
Top.Api.Request.*
API的请求参数封装类
3
Top.Api.Response.*
API的返回结果封装类
4
Top.Api.*
Top.Api.Util.*
Top.Api.Parser.*
SDK内部调用工具类,不保证以后升级不发生变化,不建议用户直接使用
5
Top.Api.ITopClient
SDK的入口类,其实现类为DefaultTopClient
2、SDK命名规则
a)数据结构类名与API线上文档中完全一样
b)API请求类名:去掉api名字中的”taobao”,把”.”后的首字母大写,再掉所有的”.”号,并加上”Request”,即为最终的类名。比如对应的请求类的类名为UserGetRequ
est。
c)API返回结果类名:去掉api名字中的”taobao”,把”.”后的首字母大写,再掉所有的”.”号,并加上”Response”,即为最终的类名。比如对应的响应类的类名为UserGetResponse。
d)默认超时时间为5秒
3、SDK使用代码示例(java版,php版,版)
JAVA版本
不需要登录(sessionKey)的API调用
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
UserGetRequest req = new UserGetRequest();
req.setFields("nick,sex,buyer_credit,seller_credit ,created,last_visit");
req.setNick("hz0799");
UserGetResponse response = ute(req);
if (response.isSuccess()) {
        System.out.User().getNick());
} else {
        // deal error
}
需要登录(sessionKey)的API调用
ute(req, sessionKey);
有文件上传的API调用
FileItem img = new FileItem(file);// FileItem为SDK包里封装好的一个类
itemAddRequest.setImage(img);
PHP版本
实例化API Client
//实例化TopClient类
$c = new TopClient;
$c->appkey = "你的appkey";
$c->secretKey = "你的secret code";
不需要登录(sessionKey)的API调用
/**********************************
* OOP风格的使用方式,下面还有传统的数组方式
**********************************/
//实例化具体API对应的Request类
$req = new UserGetRequest;
$req->setFields("nick,sex,buyer_credit,seller_credit");
$req->setNick("hz0799");
//执行API请求并打印结果
$resp = $c->execute($req);
需要登录(sessionKey)的API调用
//实例化具体API对应的Request类
$req = new UserGetRequest;
$req->setFields("nick,sex,buyer_credit,seller_credit, birthday");//这行和上面不同,登录用户可以获取隐私字段
$req->setNick("hz0799");
//执行API请求并打印结果
$resp = $c->execute($req, $sessionKey);//这行和上面不同
有文件上传的API调用
$req = new TaobaoItemImgUploadRequest;
$req->setNumIid(12345678);
$req->setImage('@C:\my_picture\item_1.jpg');//附件上传的机制参见PHP CURL文档,在文件路径前加@符号即可
$resp = $c->execute($req);
print_r($resp);
传统的数组方式调用(适合已有APP迁移到PHP SDK的客户)
/**********************************
* 非OOP风格的使用方式, 兼容已有的PHP应用
**********************************/
$req_array = array(
    "method"         => "taobao.items.search",
    "fields"           => "iid,title",
    "q"               => "ipad",
    "page_size"       => 3,
    "location.city"     => "杭州"
);
$resp = $c->exec($req_array);
print_r($resp);
.NET版本
不需要登录(sessionKey)的API调用
ITopClient client = new DefaultTopClient("url", "appkey", "appsecret");
UserGetRequest req = new UserGetRequest();
req.Fields = "user_id,nick,created,buyer_credit,type,sex";
req.Nick = "helloworld";
UserGetResponse rsp = client.Execute(req);
if (rsp.IsError)
{
    Console.WriteLine(rsp.Body);
}
需要登录(sessionKey)的API调用
ITopClient client = new DefaultTopClient("url", "appkey", "appsecret");
TradeGetRequest req = new TradeGetRequest();
req.Fields = “tid,seller_nick,buyer_nick;
req.Tid = 129318293L;
TradeGetResponse rsp = client.Execute(req, sessionKey);
有文件上传的API调用
ITopClient client = new DefaultTopClient("url", "appkey", "appsecret");
ItemAddRequest req = new ItemAddRequest();
req.Image = new FileItem(c:/temp.jpg);
ItemAddResponse rsp = client.Execute(req, sessionKey);
4、高级功能
SDK支持设置客户端的请求超时时间,设置方法为使用支持传入超时参数的构造函数来构造DefaultTaobaoClient,如:
public DefaultTaobaoClient(String serverUrl, String appKey, String appSecret, String format,int connectTimeout,int readTimeout)
其中:connectTimeout为连接超时,readTimeout为读取数据超时。默认值为0,即没有超时时间。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。