ASP.NET挪用淘宝API实例详解

转帖|其它|编辑:郝浩|2011-06-22 14:06:23.000|阅读 636 次

概述:本文和各人具体分享一下如何使用ASP.NET来调用淘宝客API开发的实例讲解。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  本文和各人具体分享一下如何使用ASP.NET来调用淘宝客API开发的实例讲解。

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

  需要使用类 ITopClient TOP客户端类

1using Top.Api.Request;

2

3namespace Top.Api

4 {

5///<summary>

6/// TOP客户端。

7///</summary>

8publicinte***ce 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);

1using System;

2using System.Collections;

3using System.Collections.Generic;

4using Top.Api.Parser;

5using Top.Api.Request;

6using Top.Api.Util;

7

8namespace Top.Api

9 {

10///<summary>

11/// 基于REST的TOP客户端。

12///</summary>

13publicclass DefaultTopClient : ITopClient

14 {

15publicconststring APP_KEY ="app_key";

16publicconststring FORMAT ="format";

17publicconststring METHOD ="method";

18publicconststring TIMESTAMP ="timestamp";

19publicconststring VERSION ="v";

20publicconststring SIGN ="sign";

21publicconststring PARTNER_ID ="partner_id";

22publicconststring SESSION ="session";

23publicconststring FORMAT_XML ="xml";

24

25privatestring serverUrl;

26privatestring appKey;

27privatestring appSecret;

28privatestring format = FORMAT_XML;

29

30private WebUtils webUtils;

31

32#region DefaultTopClient Constructors

33

34public DefaultTopClient(string serverUrl, string appKey, string appSecret)

35 {

36this.appKey = appKey;

37this.appSecret = appSecret;

38this.serverUrl = serverUrl;

39this.webUtils =new WebUtils();

40 }

41

42public DefaultTopClient(string serverUrl, string appKey, string appSecret, string format)

43 : this(serverUrl, appKey, appSecret)

44 {

45this.format = format;

46 }

47

48publicvoid SetTimeout(int timeout)

49 {

50 webUtils.Timeout = timeout;

51 }

52

53#endregion

54

55#region ITopClient Members

56

57public T Execute<T>(ITopRequest<T> request) where T : TopResponse

58 {

59return Execute<T>(request, null);

60 }

61

62public 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-");

71 txtParams.Add(TIMESTAMP, DateTime.Now);

72 txtParams.Add(SESSION, session);

73

74// 添加签名参数

75 txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret));

76

77// 是否需要上传文件

78string body;

79if (request is ITopUploadRequest<T>)

80 {

81 ITopUploadRequest<T> uRequest = (ITopUploadRequest<T>)request;

82 IDictionary<string, FileItem> fileParams = TopUtils.CleanupDictionary(uRequest.GetFileParamet ers());

83 body = webUtils.DoPost(this.serverUrl, txtParams, fileParams);

84 }

85else

86 {

87 body = webUtils.DoPost(this.serverUrl, txtParams);

88 }

89

90 T rsp;

91if (FORMAT_XML.Equals(format))

92 {

93 ITopParser<T> tp =new TopXmlParser<T>();

94 rsp = tp.Parse(body);

95 }

96else

97 {

98 ITopParser<T> tp =new TopJsonParser<T>();

99 rsp = tp.Parse(body);

100 }

101

102return rsp;

103 }

104

105#endregion

106 }

107 }

TaobaokeItemsGetResponse 信息返回

1using System;

2using System.Xml.Serialization;

3using System.Collections.Generic;

4using Top.Api.Domain;

5

6namespace Top.Api.Response

7 {

8///<summary>

9/// TaobaokeItemsGetResponse.

10///</summary>

11publicclass TaobaokeItemsGetResponse : TopResponse

12 {

13///<summary>

14/// 淘宝客商品对象列表。不返回taobaoke_cat_click_url和keyword_click_url两个字段。

15///</summary>

16 [XmlArray("taobaoke_items")]

17 [XmlArrayItem("taobaoke_item")]

18public List<TaobaokeItem> TaobaokeItems { get; set; }

19

20///<summary>

21/// 搜索到符合条件的结果总数

22///</summary>

23 [XmlElement("total_results")]

24publiclong TotalResults { get; set; }

25 }

26 }

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

1using System;

2using System.Collections.Generic;

3using Top.Api.Response;

4

5namespace Top.Api.Request

6 {

7///<summary>

8/// TOP API: taobao.taobaoke.items.get

9///</summary>

10publicclass TaobaokeItemsGetRequest : ITopRequest<TaobaokeItemsGetResponse>

11 {

12///<summary>

13/// 商品所在地

14///</summary>

15publicstring Area { get; set; }

16

17///<summary>

18/// 是否主动发货

19///</summary>

20publicstring AutoSend { get; set; }

21

22///<summary>

23/// 是否支持抵价券,设置为true表示该商品支持抵价券,设置为false或不设置表示不判定这个属性

24///</summary>

25publicstring CashCoupon { get; set; }

26

27///<summary>

28/// 是否支持货到付款,设置为true表示该商品是支持货到付款,设置为false或不设置表示不判定这个属性

29///</summary>

30publicstring CashOndelivery { get; set; }

31

32///<summary>

33/// 商品所属分类id

34///</summary>

35public Nullable<long> Cid { get; set; }

36

37///<summary>

38/// 最高累计推广佣金选项

39///</summary>

40publicstring EndCommissionNum { get; set; }

41

 42///<summary>

    43/// 最高佣金比率选项http://uybdzd.edu.tc,如:2345表示23.45%.注:要起始佣金比率和最高佣金比率一起设置才有效。

    44///</summary>

    45publicstring EndCommissionRate { get; set; }

    46

    47///<summary>

    48/// 可选值和start_credit一样。start_credit的值一定要小于或即是end_credit的值。注:end_credit与start_credit一起使用才生效

    49///</summary>

    50publicstring EndCredit { get; set; }

    51

    52///<summary>

    53/// 最高价格

    54///</summary>

    55publicstring EndPrice { get; set; }

    56

    57///<summary>

    58/// 累计推广量规模竣事

    59///</summary>

    60publicstring EndTotalnum { get; set; }

    61

    62///<summary>[nextpage]

    63/// 需返回的字段列表。可选值:num_iid,title,nick,pic_url,price,click_url,commis sion,commission_rate,commission_num,commission_vol u me,shop_click_url,seller_credit_score,item_locatio n ,volume ;字段之间用","分隔

    64///</summary>

    65publicstring Fields { get; set; }

    66

    67///<summary>

    68/// 是否查询消保卖家

    69///</summary>

    70publicstring Guarantee { get; set; }

    71

    72///<summary>

    73/// 标识一个应用是否来在无线或者手机应用,假如是true则会使用其他法则加密点击串。假如不穿值,则默认是false.

    74///</summary>

    75public Nullable<bool> IsMobile { get; set; }

    76

    77///<summary>

    78/// 商品标题中包含的关键字。 留意:查询时keyword,cid至少选择其中一个参数

    79///</summary>

    80publicstring Keyword { get; set; }

    81

    82///<summary>

    83/// 是否商城的商品,设置为true表示该商品是属于淘宝商城的商品,设置为false或不设置表示不判定这个属性

    84///</summary>

    85publicstring MallItem { get; set; }

    86

    87///<summary>

    88/// 淘宝用户昵称,注:指的是淘宝的会员登录名。假如昵称错误,那么客户就收不到佣金。每个淘宝昵称都对应于一个pid,在这里输进要结算佣金的淘宝昵称,当推广的商品成功后,佣金会打进此输进的淘宝昵称的账户。具体的信息可以登进阿里妈妈的网站查看。 <font color="red">留意nick和pid至少需要传递一个,假如2个都传了,将以pid为准</font>

    89///</summary>

    90publicstring Nick { get; set; }

    91

    92///<summary>

    93/// 是否30天维修,设置为true表示该商品是支持30天维修,设置为false或不设置表示不判定这个属性

    94///</summary>

    95publicstring OnemonthRepair { get; set; }

    96

    97///<summary>

    98/// 自定义输进串。格式:英文和数字组成;长度不能大于12个字符,区分不同的推广渠道,如:bbs,表示bbs为推广渠道;blog,表示blog为推广渠道。

    99///</summary>

    100publicstring OuterCode { get; set; }

    101

    102///<summary>

    103/// 是否海外商品,设置为true表示该商品是属于海外商品,默以为false

    104///</summary>

    105publicstring OverseasItem { get; set; }

    106

    107///<summary>

    108/// 结果页数。1~99

    109///</summary>

    110public Nullable<long> PageNo { get; set; }

    111

    112///<summary>

    113/// 每页返回结果数。最大每页40

    114///</summary>

    115public Nullable<long> PageSize { get; set; }

    116

    117///<summary>

    118/// 用户的pid,必须是mm_***x_0_0这种格式中间的"***x". <font color="red">留意nick和pid至少需要传递一个,假如2个都传了,将以pid为准,且pid的最大长度是20</font>

    119///</summary>

    120publicstring Pid { get; set; }

    121

    122///<summary>

    123/// 是否如实描述(即:先行赔付)商品,设置为true表示该商品是如实描述的商品,设置为false或不设置表示不判定这个属性

    124///</summary>

    125publicstring RealDescribe { get; set; }

    126

    127///<summary>

    128/// 是否支持7天退换,设置为true表示该商品支持7天退换,设置为false或不设置表示不判定这个属性

    129///</summary>

    130publicstring SevendaysReturn { get; set; }

    131

    132///<summary>[nextpage]

    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>

    135publicstring Sort { get; set; }

    136

    137///<summary>

    138/// 起始累计推广量佣金。注:返回的数据是30天内累计推广量,具该字段要与最高累计推广量一起使用才生效

    139///</summary>

    140publicstring StartCommissionNum { get; set; }

    141

    142///<summary>

    143/// 起始佣金比率选项,如:1234表示12.34%

    144///</summary>

    145publicstring 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>

    150publicstring StartCredit { get; set; }

    151

    152///<summary>

    153/// 起始价格。传进价格参数时,需留意起始价格和最高价格必须一起传进,并且 start_price <= end_price

    154 ///</summary>

    155publicstring StartPrice { get; set; }

    156

    157///<summary>

    158/// 累计推广量规模开始

    159///</summary>

    160publicstring StartTotalnum { get; set; }

    161

    162///<summary>

    163/// 是否支持VIP卡,设置为true表示该商品支持VIP卡,设置为false或不设置表示不判定这个属性

    164///</summary>

    165publicstring VipCard { get; set; }

    166

    167#region ITopRequest Members

    168

    169publicstring GetApiName()

    170 {

    171return"taobao.taobaoke.items.get";

    172 }

    173

    174public 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);

    208return parameters;

    209 }

    210

    211#endregion

 212 }

    213 }

    ///<summary>

    /// taobao.taobaoke.items.get 查询淘宝客推广商品

    ///</summary>

    ///<param name="req">请求实体参数</param>

    ///<returns>返回商品实体数组</returns>

    publicstatic 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;

    } %D%

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP