Silverlight无法直接调用淘宝的API,可以使用WebClient或者自定义WCF来间接调用淘宝接口。

本例中采用的是调用WebClient方式,执行一段ashx,然后将返回的数据用反序列化生成相应对象的实例。

起始页面为Login.aspx,固定调试端口为49441。需要配合自己淘宝开放平台的应用的回调页面URL来调整。

示例代码下载

ashx代码:

(说明:代码中ITopClient为淘宝接口TopSdk.dll中的类,此例子使用的ItemsOnsaleGetRequest是用于获取销售中的商品,response.Body是获取到的数据信息)

public class OnsaleGet : IHttpHandler{public void ProcessRequest(HttpContext context){context.Response.ContentType = "text/plain";ITopClient client = new DefaultTopClient(Config.ServerURL, Config.Appkey, Config.Secret);ItemsOnsaleGetRequest req = new ItemsOnsaleGetRequest();req.Fields = "approve_status,num_iid,title,nick,type,cid,pic_url,num,props,valid_thru,list_time,price,has_discount,has_invoice,has_warranty,has_showcase,modified,delist_time,postage_id,seller_cids,outer_id";ItemsOnsaleGetResponse response = client.Execute(req, Config.Top_session);if (response.IsError){context.Response.Write("[错误:查询函数执行失败]");}else{context.Response.Write(response.Body);}}public bool IsReusable{get{return false;}}}

前端SL获取数据信息的方法

void GetList(){string absolutePath = HtmlPage.Document.DocumentUri.AbsoluteUri;string address = absolutePath.Substring(0, absolutePath.LastIndexOf('/'))+ "/TaoBaoHandler/OnsaleGet.ashx";Uri uri = new Uri(address);WebClient client = new WebClient();client.DownloadStringCompleted += (sender, e) =>{if (e.Error == null){System.Xml.Linq.XElement.Parse(e.Result);//字符串转为xml
                    ItemsOnsaleGetResponse list = SerializeHelper.DeserializeFromString<ItemsOnsaleGetResponse>(e.Result);//反序列化if (list != null){if (list.Items != null && list.Items.Count > 0){MessageBox.Show(list.Items[0].NumIid.ToString());}}else{}}else{MessageBox.Show(e.Error.Message);}};client.DownloadStringAsync(uri);}

SerializeHelper

序列化部分是自定义的一个类

public class SerializeHelper{private SerializeHelper() { }#region Serialize/// <summary>/// 序列化实体/// </summary>/// <typeparam name="T">实体类型</typeparam>/// <param name="data">实体</param>/// <returns>xml字体串</returns>public static string Serialize<T>(T data){try{var serializer = new XmlSerializer(typeof(T));XmlSerializerNamespaces ns = new XmlSerializerNamespaces();ns.Add("", "");XmlWriterSettings writerSettings = new XmlWriterSettings();writerSettings.OmitXmlDeclaration = true;StringWriter stringWriter = new StringWriter();using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, writerSettings)){serializer.Serialize(xmlWriter, data, ns);}string xmlText = stringWriter.ToString();return xmlText;}catch (InvalidOperationException ex){if (ex.Message != ""){ }}return string.Empty;}public static string SerializeList<T>(List<T> list){try{var serializer = new XmlSerializer(typeof(List<T>));XmlSerializerNamespaces ns = new XmlSerializerNamespaces();ns.Add("", "");XmlWriterSettings writerSettings = new XmlWriterSettings();writerSettings.OmitXmlDeclaration = true;StringWriter stringWriter = new StringWriter();using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, writerSettings)){serializer.Serialize(xmlWriter, list, ns);}string xmlText = stringWriter.ToString();return xmlText;}catch{ }return string.Empty;}#endregion#region Deserializer/// <summary>/// 反序列化实体/// </summary>/// <typeparam name="T">实体类型</typeparam>/// <param name="xml">xml字体串</param>/// <returns>实体</returns>public static T DeserializeFromString<T>(string xml){T theObject;try{XmlReader reader = XmlReader.Create(new StringReader(xml));var serializer = new XmlSerializer(typeof(T));theObject = (T)serializer.Deserialize(reader);reader.Close();return theObject;}catch{ }return default(T);}public static List<T> DeserializeListFromString<T>(string xml){try{var serializer = new XmlSerializer(typeof(List<T>));StringReader reader = new StringReader(xml);List<T> list = (List<T>)serializer.Deserialize(reader);reader.Close();return list;}catch (InvalidOperationException ex){if (ex.InnerException.Message != ""){ }}return null;}#endregion}

淘宝相关的数据类型

TopModels模块中的ItemsOnsaleGetResponse,Item,ItemImg,Location等这些实体是从TopSdk.dll中找到相应的定义粘贴出来供Silverlight下使用的。如图

web.config中的配置

配置沙箱环境和正式环境的选择,以及AppKey和AppSecret

<appSettings><!--IsSandBox 1=沙箱开启 0=非沙箱(正式环境)  --><add key="SandBox" value="1"/><!--应用 信息--><add key="AppKey" value="1012596959"/><add key="AppSecret" value="sandboxc5928dd8d1cfa3bb4f7d87e33"/></appSettings>

另外,web中的那些Client.cs和Config.cs则是从淘宝示例Demo中来的。

最终数据的获取如下:

示例代码下载

转载于:https://www.cnblogs.com/xtechnet/archive/2012/06/26/TopBySilverlight.html

用Silverlight做淘宝应用相关推荐

  1. 用微信公众号做淘宝优惠券查券和返利机器人的详细配置教程

    用微信公众号做淘宝优惠券查券和返利机器人的详细配置教程:微信公众号淘宝客机器人,微信公众号淘客系统自助搭建教程 一.淘宝联盟官方淘宝客私域渠道ID申请 1.登陆淘宝联盟 用需要开通淘宝联盟的手机淘宝扫 ...

  2. 做淘宝页面前的基础准备

    做淘宝页面前的基础准备 文章目录 做淘宝页面前的基础准备 浏览器的默认加载策略 元素嵌套规则 特殊元素(p标签和a标签) 基础补充 导航栏布局 文本元素 行级元素 实现导航栏左右浮动效果 实现图标加文 ...

  3. 淘宝怎么选品技巧秘籍,做淘宝7分靠选货品

    淘宝怎么选品技巧秘籍,做淘宝7分靠选货品#电商#电商创业#电商运营 做淘宝, 7 分靠选品, 3 分靠运营.视频一定能够缓解你现在缺产品,还不知道选产品的苦恼.通过跨平台选品,能够找到一些利润又高,同 ...

  4. 我28岁开始做淘宝,2年赚够100万:赚钱,真的不能靠拼命!!

    最近看到一个热门话题:你什么时刻体会到了中年危机? 翻开评论感到一阵揪心: 面临公司突如其来的裁员 求职时遭受不招30岁以上的拒绝 房贷车贷孩子老人处处都需要钱 大病小病不断,却因囊中羞涩一拖再拖.. ...

  5. 做淘宝产品标题要找蓝海关键词

    做淘宝产品,要学会找竞争最小的产品,找到蓝海的产品.这其实跟我们做搜索引擎优化,做长尾关键词的策略一样. 同样的道理,如果可以找到蓝海的产品,我们就能找到蓝海的关键词.因为本身这个关键词查询功能,最大 ...

  6. 做淘宝优惠券怎么线上引流?淘宝客优惠券如何引流?

    一.为什么做淘宝客? 很简单,为了赚钱!淘宝客有几个"0":0门槛.0投资.0囤货.0发货.0风险 做淘宝客的收入是被动收入,在微商或者其他传统模式里,你卖出去一件货赚一件货的钱, ...

  7. 如何做淘宝客推广淘宝客教程视频

    如何做淘宝客推广淘宝客教程视频 新手淘宝客如何快速制作一个自己的淘宝客网站,今天给大家分享淘宝客视频就从淘宝客教程方面来讲解如何制作一个自己的淘宝客网站,该注意什么应该如何入手做好淘宝客网站,每一步如 ...

  8. 我做淘宝7年的工作经验总结

    导读:这是一个老电商人,做淘宝7年,混到运营总监的位置,今年本命年运气不太好,出了车祸把腿摔骨折,此文便是在住院期间写下,干货挺多,不是软文.导读:这是一个老电商人,做淘宝7年,混到运营总监的位置,今 ...

  9. 兼职做淘宝客好吗?淘客APP怎么盈利?

    兼职做淘宝客好吗?淘客APP怎么盈利? 本人做淘客类应用四年有余了,各个平台基本都接触过,模式基本也都了解,写这篇文章主要是对淘客类兼职应用的模式做一个简要的分析.一方面是对自己过去两年年的工作经验做 ...

最新文章

  1. SAP RETAIL WB02 为门店激活物料分类账报错 - ML currencies are not integrated in FI for valuation area m123 NMI1 –
  2. 洛谷P7361:拜神(SA、二分、主席树、启发式合并)
  3. python中{%%}在HTML中的用法
  4. 写jsx_使用Vue 3.0做JSX(TSX)风格的组件开发
  5. 【技术帖】真正解决反恐精英csOL:StartService 0X204 为防御非法程序driver
  6. Mac Duet使用教程
  7. matlab实现3维测井曲线绘制
  8. RGB格式学习:RGBx、xRGB、RGBA、ARGB等格式转换成RGB
  9. 屏幕录像专家V7.5注册机
  10. ps快捷图标在哪个文件夹_ps安装包在哪个文件夹
  11. nebula模拟器_Nebula街机模拟器使用方法 Nebula街机模拟器怎么用
  12. Linux命令:常用进程查看命令
  13. 鸿蒙os系统使用技巧,鸿蒙OS 应用权限管理
  14. 【sv】for循环+fork-join_none结构的坑
  15. 如何查看远程端口是否打开
  16. 《惢客创业日记》2019.04.25(周四)如何解决骚扰电话?
  17. springboot搭建redis时提示RedisCommandExecutionException: CLUSTERDOWN Hash slot not served解决办法
  18. manjaro安装与配置(vscode,微信,美化,输入法)
  19. Python tutrle画棋盘格
  20. 大佬给总结的单片机看门狗详解很有用

热门文章

  1. HttpClient 模拟登录手机版新浪微博
  2. matlab实现ica,Matlab用ICA进行话语分离
  3. 2015年《大数据》高被引论文Top10文章No.6——医疗健康大数据:应用实例与系统分析...
  4. 川大计算机学院夏之畅,菌菌帮推|后生可畏II-01:多才多艺小门神——廖乘枫
  5. 三自由度机器人运动学matlab仿真实验报告,3自由度机器人的正运动学建模研究...
  6. Cocos2d-x 3D模型渲染
  7. iOS中CFUUIDRef,CFUUIDCreate声称唯一字符串
  8. dhu复试基础——63 倒序
  9. 王者微信怎么查其它服务器的信息,王者荣耀微信怎么看别人是哪个区的 | 手游网游页游攻略大全...
  10. Human vs AI,人类和机器的学习究竟谁更胜一筹?