自动化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目录结构
功能 | ||
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小时内删除。
发表评论