淘宝客之 API调用实例讲解

第一步 获取全部推广商品实体

需要使用类

ITopClient TOP客户端类

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
1 using Top.Api.Request;
2
3   namespace Top.Api
4 {
5 /// <summary>
6 /// TOP客户端。
7 /// </summary>
8   public interface ITopClient
9 {
10 /// <summary>
11 /// 执行TOP公开API请求。
12 /// </summary>
13 /// <typeparam name="T"> 领域对象 </typeparam>
14 /// <param name="request"> 具体的TOP API请求 </param>
15 /// <returns> 领域对象 </returns>
16   T Execute < T > (ITopRequest < T > request) where T : TopResponse;
17
18 /// <summary>
19 /// 执行TOP隐私API请求。
20 /// </summary>
21 /// <typeparam name="T"> 领域对象 </typeparam>
22 /// <param name="request"> 具体的TOP API请求 </param>
23 /// <param name="session"> 用户会话码 </param>
24 /// <returns> 领域对象 </returns>
25   T Execute < T > (ITopRequest < T > request, string session) where T : TopResponse;
26 }
27 }

DefaultTopClient 初始化连接(请求地址, Appkey, AppSecret);

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
1 using System;
2   using System.Collections;
3   using System.Collections.Generic;
4   using Top.Api.Parser;
5 using Top.Api.Request;
6 using Top.Api.Util;
7
8 namespace Top.Api
9 {
10 /// <summary>
11 /// 基于REST的TOP客户端。
12 /// </summary>
13 public class DefaultTopClient : ITopClient
14 {
15 public const string APP_KEY = " app_key " ;
16 public const string FORMAT = " format " ;
17 public const string METHOD = " method " ;
18 public const string TIMESTAMP = " timestamp " ;
19 public const string VERSION = " v " ;
20 public const string SIGN = " sign " ;
21 public const string PARTNER_ID = " partner_id " ;
22 public const string SESSION = " session " ;
23 public const string FORMAT_XML = " xml " ;
24
25 private string serverUrl;
26 private string appKey;
27 private string appSecret;
28 private string format = FORMAT_XML;
29
30 private WebUtils webUtils;
31
32 #region DefaultTopClient Constructors
33
34 public DefaultTopClient( string serverUrl, string appKey, string appSecret)
35 {
36 this .appKey = appKey;
37 this .appSecret = appSecret;
38 this .serverUrl = serverUrl;
39 this .webUtils = new WebUtils();
40 }
41
42 public DefaultTopClient( string serverUrl, string appKey, string appSecret, string format)
43 : this (serverUrl, appKey, appSecret)
44 {
45 this .format = format;
46 }
47
48 public void SetTimeout( int timeout)
49 {
50 webUtils.Timeout = timeout;
51 }
52
53 #endregion
54
55 #region ITopClient Members
56
57 public T Execute < T > (ITopRequest < T > request) where T : TopResponse
58 {
59 return Execute < T > (request, null );
60 }
61
62 public T Execute < T > (ITopRequest < T > request, string session) where T : TopResponse
63 {
64 // 添加协议级请求参数
65 TopDictionary txtParams = new TopDictionary(request.GetParameters());
66 txtParams.Add(METHOD, request.GetApiName());
67 txtParams.Add(VERSION, " 2.0 " );
68 txtParams.Add(APP_KEY, appKey);
69 txtParams.Add(FORMAT, format);
70 txtParams.Add(PARTNER_ID, " top-sdk-net-20110317 " );
71 txtParams.Add(TIMESTAMP, DateTime.Now);
72 txtParams.Add(SESSION, session);
73
74 // 添加签名参数
75 txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret));
76
77 // 是否需要上传文件
78 string body;
79 if (request is ITopUploadRequest < T > )
80 {
81 ITopUploadRequest < T > uRequest = (ITopUploadRequest < T > )request;
82 IDictionary < string , FileItem > fileParams = TopUtils.CleanupDictionary(uRequest.GetFileParameters());
83 body = webUtils.DoPost( this .serverUrl, txtParams, fileParams);
84 }
85 else
86 {
87 body = webUtils.DoPost( this .serverUrl, txtParams);
88 }
89
90 T rsp;
91 if (FORMAT_XML.Equals(format))
92 {
93 ITopParser < T > tp = new TopXmlParser < T > ();
94 rsp = tp.Parse(body);
95 }
96 else
97 {
98 ITopParser < T > tp = new TopJsonParser < T > ();
99 rsp = tp.Parse(body);
100 }
101
102 return rsp;
103 }
104
105 #endregion
106 }
107 }

TaobaokeItemsGetResponse 信息返回

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
1 using System;
2 using System.Xml.Serialization;
3 using System.Collections.Generic;
4 using Top.Api.Domain;
5
6 namespace Top.Api.Response
7 {
8 /// <summary>
9 /// TaobaokeItemsGetResponse.
10 /// </summary>
11 public class TaobaokeItemsGetResponse : TopResponse
12 {
13 /// <summary>
14 /// 淘宝客商品对象列表.不返回taobaoke_cat_click_url和keyword_click_url两个字段。
15 /// </summary>
16 [XmlArray( " taobaoke_items " )]
17 [XmlArrayItem( " taobaoke_item " )]
18 public List < TaobaokeItem > TaobaokeItems { get ; set ; }
19
20 /// <summary>
21 /// 搜索到符合条件的结果总数
22 /// </summary>
23 [XmlElement( " total_results " )]
24 public long TotalResults { get ; set ; }
25 }
26 }

剩下的实体绑定不需要我说了吧 www.qtcrm.com 首页信息显示就是通过这个获取到的 类型与

数量等信息在请求类中条件设置

TaobaokeItemsGetRequest 在请求类中设置相应条件信息。

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
1 using System;
2 using System.Collections.Generic;
3 using Top.Api.Response;
4
5 namespace Top.Api.Request
6 {
7 /// <summary>
8 /// TOP API: taobao.taobaoke.items.get
9 /// </summary>
10 public class TaobaokeItemsGetRequest : ITopRequest < TaobaokeItemsGetResponse >
11 {
12 /// <summary>
13 /// 商品所在地
14 /// </summary>
15 public string Area { get ; set ; }
16
17 /// <summary>
18 /// 是否自动发货
19 /// </summary>
20 public string AutoSend { get ; set ; }
21
22 /// <summary>
23 /// 是否支持抵价券,设置为true表示该商品支持抵价券,设置为false或不设置表示不判断这个属性
24 /// </summary>
25 public string CashCoupon { get ; set ; }
26
27 /// <summary>
28 /// 是否支持货到付款,设置为true表示该商品是支持货到付款,设置为false或不设置表示不判断这个属性
29 /// </summary>
30 public string CashOndelivery { get ; set ; }
31
32 /// <summary>
33 /// 商品所属分类id
34 /// </summary>
35 public Nullable < long > Cid { get ; set ; }
36
37 /// <summary>
38 /// 最高累计推广佣金选项
39 /// </summary>
40 public string EndCommissionNum { get ; set ; }
41
42 /// <summary>
43 /// 最高佣金比率选项,如:2345表示23.45%。注:要起始佣金比率和最高佣金比率一起设置才有效。
44 /// </summary>
45 public string EndCommissionRate { get ; set ; }
46
47 /// <summary>
48 /// 可选值和start_credit一样.start_credit的值一定要小于或等于end_credit的值。注:end_credit与start_credit一起使用才生效
49 /// </summary>
50 public string EndCredit { get ; set ; }
51
52 /// <summary>
53 /// 最高价格
54 /// </summary>
55 public string EndPrice { get ; set ; }
56
57 /// <summary>
58 /// 累计推广量范围结束
59 /// </summary>
60 public string EndTotalnum { get ; set ; }
61
62 /// <summary>
63 /// 需返回的字段列表.可选值:num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume ;字段之间用","分隔
64 /// </summary>
65 public string Fields { get ; set ; }
66
67 /// <summary>
68 /// 是否查询消保卖家
69 /// </summary>
70 public string Guarantee { get ; set ; }
71
72 /// <summary>
73 /// 标识一个应用是否来在无线或者手机应用,如果是true则会使用其他规则加密点击串.如果不穿值,则默认是false.
74 /// </summary>
75 public Nullable < bool > IsMobile { get ; set ; }
76
77 /// <summary>
78 /// 商品标题中包含的关键字. 注意:查询时keyword,cid至少选择其中一个参数
79 /// </summary>
80 public string Keyword { get ; set ; }
81
82 /// <summary>
83 /// 是否商城的商品,设置为true表示该商品是属于淘宝商城的商品,设置为false或不设置表示不判断这个属性
84 /// </summary>
85 public string MallItem { get ; set ; }
86
87 /// <summary>
88 /// 淘宝用户昵称,注:指的是淘宝的会员登录名.如果昵称错误,那么客户就收不到佣金.每个淘宝昵称都对应于一个pid,在这里输入要结算佣金的淘宝昵称,当推广的商品成功后,佣金会打入此输入的淘宝昵称的账户。具体的信息可以登入阿里妈妈的网站查看. <font color="red"> 注意nick和pid至少需要传递一个,如果2个都传了,将以pid为准 </font>
89 /// </summary>
90 public string Nick { get ; set ; }
91
92 /// <summary>
93 /// 是否30天维修,设置为true表示该商品是支持30天维修,设置为false或不设置表示不判断这个属性
94 /// </summary>
95 public string OnemonthRepair { get ; set ; }
96
97 /// <summary>
98 /// 自定义输入串.格式:英文和数字组成;长度不能大于12个字符,区分不同的推广渠道,如:bbs,表示bbs为推广渠道;blog,表示blog为推广渠道.
99 /// </summary>
100 public string OuterCode { get ; set ; }
101
102 /// <summary>
103 /// 是否海外商品,设置为true表示该商品是属于海外商品,默认为false
104 /// </summary>
105 public string OverseasItem { get ; set ; }
106
107 /// <summary>
108 /// 结果页数.1~99
109 /// </summary>
110 public Nullable < long > PageNo { get ; set ; }
111
112 /// <summary>
113 /// 每页返回结果数.最大每页40
114 /// </summary>
115 public Nullable < long > PageSize { get ; set ; }
116
117 /// <summary>
118 /// 用户的pid,必须是mm_xxxx_0_0这种格式中间的"xxxx". <font color="red"> 注意nick和pid至少需要传递一个,如果2个都传了,将以pid为准,且pid的最大长度是20 </font>
119 /// </summary>
120 public string Pid { get ; set ; }
121
122 /// <summary>
123 /// 是否如实描述(即:先行赔付)商品,设置为true表示该商品是如实描述的商品,设置为false或不设置表示不判断这个属性
124 /// </summary>
125 public string RealDescribe { get ; set ; }
126
127 /// <summary>
128 /// 是否支持7天退换,设置为true表示该商品支持7天退换,设置为false或不设置表示不判断这个属性
129 /// </summary>
130 public string SevendaysReturn { get ; set ; }
131
132 /// <summary>
133 /// 默认排序:default price_desc(价格从高到低) price_asc(价格从低到高) credit_desc(信用等级从高到低) commissionRate_desc(佣金比率从高到底) commissionRate_asc(佣金比率从低到高) commissionNum_desc(成交量成高到低) commissionNum_asc(成交量从低到高) commissionVolume_desc(总支出佣金从高到底) commissionVolume_asc(总支出佣金从低到高) delistTime_desc(商品下架时间从高到底) delistTime_asc(商品下架时间从低到高)
134 /// </summary>
135 public string Sort { get ; set ; }
136
137 /// <summary>
138 /// 起始累计推广量佣金.注:返回的数据是30天内累计推广量,具该字段要与最高累计推广量一起使用才生效
139 /// </summary>
140 public string StartCommissionNum { get ; set ; }
141
142 /// <summary>
143 /// 起始佣金比率选项,如:1234表示12.34%
144 /// </summary>
145 public string StartCommissionRate { get ; set ; }
146
147 /// <summary>
148 /// 卖家信用: 1heart(一心) 2heart (两心) 3heart(三心) 4heart(四心) 5heart(五心) 1diamond(一钻) 2diamond(两钻) 3diamond(三钻) 4diamond(四钻) 5diamond(五钻) 1crown(一冠) 2crown(两冠) 3crown(三冠) 4crown(四冠) 5crown(五冠) 1goldencrown(一黄冠) 2goldencrown(二黄冠) 3goldencrown(三黄冠) 4goldencrown(四黄冠) 5goldencrown(五黄冠)
149 /// </summary>
150 public string StartCredit { get ; set ; }
151
152 /// <summary>
153 /// 起始价格.传入价格参数时,需注意起始价格和最高价格必须一起传入,并且 start_price <= end_price
154 /// </summary>
155 public string StartPrice { get ; set ; }
156
157 /// <summary>
158 /// 累计推广量范围开始
159 /// </summary>
160 public string StartTotalnum { get ; set ; }
161
162 /// <summary>
163 /// 是否支持VIP卡,设置为true表示该商品支持VIP卡,设置为false或不设置表示不判断这个属性
164 /// </summary>
165 public string VipCard { get ; set ; }
166
167 #region ITopRequest Members
168
169 public string GetApiName()
170 {
171 return " taobao.taobaoke.items.get " ;
172 }
173
174 public IDictionary < string , string > GetParameters()
175 {
176 TopDictionary parameters = new TopDictionary();
177 parameters.Add( " area " , this .Area);
178 parameters.Add( " auto_send " , this .AutoSend);
179 parameters.Add( " cash_coupon " , this .CashCoupon);
180 parameters.Add( " cash_ondelivery " , this .CashOndelivery);
181 parameters.Add( " cid " , this .Cid);
182 parameters.Add( " end_commissionNum " , this .EndCommissionNum);
183 parameters.Add( " end_commissionRate " , this .EndCommissionRate);
184 parameters.Add( " end_credit " , this .EndCredit);
185 parameters.Add( " end_price " , this .EndPrice);
186 parameters.Add( " end_totalnum " , this .EndTotalnum);
187 parameters.Add( " fields " , this .Fields);
188 parameters.Add( " guarantee " , this .Guarantee);
189 parameters.Add( " is_mobile " , this .IsMobile);
190 parameters.Add( " keyword " , this .Keyword);
191 parameters.Add( " mall_item " , this .MallItem);
192 parameters.Add( " nick " , this .Nick);
193 parameters.Add( " onemonth_repair " , this .OnemonthRepair);
194 parameters.Add( " outer_code " , this .OuterCode);
195 parameters.Add( " overseas_item " , this .OverseasItem);
196 parameters.Add( " page_no " , this .PageNo);
197 parameters.Add( " page_size " , this .PageSize);
198 parameters.Add( " pid " , this .Pid);
199 parameters.Add( " real_describe " , this .RealDescribe);
200 parameters.Add( " sevendays_return " , this .SevendaysReturn);
201 parameters.Add( " sort " , this .Sort);
202 parameters.Add( " start_commissionNum " , this .StartCommissionNum);
203 parameters.Add( " start_commissionRate " , this .StartCommissionRate);
204 parameters.Add( " start_credit " , this .StartCredit);
205 parameters.Add( " start_price " , this .StartPrice);
206 parameters.Add( " start_totalnum " , this .StartTotalnum);
207 parameters.Add( " vip_card " , this .VipCard);
208 return parameters;
209 }
210
211 #endregion
212 }
213 }

淘宝客起初有调用次数限制 请注意优化缓存 否则将无法显示数据信息。并且网站打开异常缓慢,建议单独写个控制类方法 方便修改于后续的 缓存信息定义。好了 今天很晚了

这几天公司比较忙 没有更新 如果大家需要了解什么 以后陆续更新

如果对www.qtcrm.com上面的那些技术应用有急需了解的请 留言 我将在下篇文章中详细解释。 写的不好希望大家海涵。

希望可以帮到 愿意走淘宝客之路的朋友。

 
  
/// <summary>
/// taobao.taobaoke.items.get 查询淘宝客推广商品
/// </summary>
/// <param name="req"> 请求实体参数 </param>
/// <returns> 返回商品实体数组 </returns>
public static TaobaokeItem[] GetItemArray(TaobaokeItemsGetRequest req)
{
ITopClient client
= new DefaultTopClient(Config.ServerURL, Config.Appkey, Config.AppSecret);
req.Pid
= Config.Pid; /// 淘宝客PID 可以到阿里妈妈查询
TaobaokeItemsGetResponse response = client.Execute(req);
if (response.IsError)
{
string err = response.ErrMsg;
string ierr = response.ErrCode;
ErrorLog.Save(
" TaobaokeAPI " , ierr, err, All.GetErrorCN( int .Parse(ierr)));
}
return response.TotalResults > 0 ? response.TaobaokeItems.ToArray() : null ;
}

转载于:https://www.cnblogs.com/azzx/archive/2011/04/11/2012969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值