平台技术-.NET SDK使用说明

环境依赖

  • .NET Framework 2.0 及以上 (不支持Windows Phone平台)

使用示例

获取淘宝当前系统时间

ITopClient client = new DefaultTopClient("http://gw.api.taobao.com/router/rest", "appkey", "appsecret", "json");
TimeGetRequest req = new TimeGetRequest();
TimeGetResponse rsp = client.Execute(req);
Console.WriteLine(rsp.Body);

获取单笔交易详情

ITopClient client = new DefaultTopClient("http://gw.api.taobao.com/router/rest", "appkey", "appsecret", "json");
TradeFullinfoGetRequest req = new TradeFullinfoGetRequest();
req.Fields = "tid,type,status,payment,orders";
req.Tid = 123456789L;
TradeFullinfoGetResponse rsp = client.Execute(req, sessionKey);
Console.WriteLine(rsp.Body);

监听实时消息通知

TmcClient client = new TmcClient("app_key", "app_secret", "default"); 
client.OnMessage += (s, e) => 
{ 
    try 
    { 
        Console.WriteLine(e.Message.Content); 
        Console.WriteLine(e.Message.Topic);
        // 默认不抛出异常则认为消息处理成功 
    } 
    catch (Exception exp) 
    { 
        Console.WriteLine(exp.StackTrace); 
        e.Fail(); // 消息处理失败回滚,服务端需要重发 
    } 
}; 
client.Connect("ws://mc.api.taobao.com/");

批量调用API

BatchTopClient client = new BatchTopClient("http://gw.api.taobao.com/router/batch", "appkey", "appsecret", "json");
TimeGetRequest timeRequest = new TimeGetRequest();
AppipGetRequest ipRequest = new AppipGetRequest();
TopBatchRequest batch = new TopBatchRequest();
batch.AddRequest(timeRequest).AddRequest(ipRequest);
TopBatchResponse rsp = client.Execute(batch);
Console.WriteLine(rsp.Body);

服务地址

API服务地址

QQ截图20170213154955.png

消息服务地址

QQ截图20170213155016.png

高级功能

不解释响应字符串为对象(这时候XxxResponse包含的对象为null)

DefaultTopClient.SetDisableParser(true)

采用精简化的JSON结构返回,去除多余JSON节点

DefaultTopClient.SetUseSimplifyJson(true)

取消API调用日志打点

DefaultTopClient.SetDisableTrace(true)

忽略HTTPS证书检查(建议只在测试环境打开)

DefaultTopClient.SetIgnoreSSLCheck(true)

取消响应GZIP压缩功能(GZIP压缩功能可以显著的减少网络传输,强烈建议不要取消)

DefaultTopClient.SetUseGzipEncoding(false)

设置HTTP连接超时和读超时时间(网络环境差的情况下可以适当增大)

// HTTP等待请求开始返回的超时时间:默认20秒
DefaultTopClient.SetTimeout(20000L)
// HTTP等待读取数据完成的超时时间:默认60秒
DefaultTopClient.SetReadWriteTimeout(60000L)

修改日志打点存储路径

DefaultTopLogger.FilePath = "c:/tmp/topsdk.log";

API调用出错自动重试(一般情况下ISP类的错误是可以重试成功的)

AutoRetryTopClient client = new AutoRetryTopClient("http://gw.api.taobao.com/router/rest", "appkey", "appsecret", "json");
client.SetMaxRetryCount(3);
client.SetRetryWaitTime(100L);
TimeGetRequest request = new TimeGetRequest();
TimeGetResponse response = client.Execute(request);
if (!response.IsError) {
    Console.WriteLine(response.Body);
}

API调用就近路由(根据API发起调用所在地选择就近的TOP机房进行调用)

ClusterTopClient client = new ClusterTopClient("http://gw.api.taobao.com/router/rest", "appkey", "appsecret", "json");
TimeGetRequest request = new TimeGetRequest();
TimeGetResponse response = client.Execute(request);
Console.WriteLine(response.Body);

注意事项

  • ITopClient的实现类都是线程安全的,所以没有必要每次API请求都新建一个ITopClient实现类
  • 创建ITopClient实现类的实例时,指定format=json,相比xml格式,可以减少数据传输量,提升API请求效率

FAQ

  • 关于此文档暂时还没有FAQ