继续前面一篇随笔《淘宝API开发系列---淘宝API的测试及使用》, 来继续介绍淘宝API的具体代码开发部分,上篇主要是介绍淘宝SDK开发的一些流程及必备的信息,以及掌握如何学会利用API文档、淘宝API测试工具来 获取我们所需的数据,其中我一般倾向于获取Json数据,然后进行分析,其中Json数据可以通过JsonView工具(http://jsonviewer.codeplex.com/) 进行格式化显示,方便我们了解和区分各个属性的信息。另外淘宝的SDK里面,封装了很多对象,我们通过数据就可以获取到相关的信息了,不过注意的就是,我 们每个接口调用,都要传入Fields的属性,如果我们没有指定相应的属性字段,那么接口返回的数据,就没有这项的,淘宝SDK的对象属性就会为空。
通过以上的工具,我们就能可视化属性的信息了,对接口数据的理解就更加清晰,首先我们来看看我测试例子的运行效果如下所示。
其中上面例子的代码如下所示。
private void TestUserGet() { //单独用户的信息 Console.WriteLine("单独用户的信息"); //实例化具体API对应的Request类 UserGetRequest req = new UserGetRequest(); req.Fields = "user_id,nick,created,buyer_credit,type,sex"; req.Nick = "wuhuacong"; //执行API请求并将该类转换为response对象 UserGetResponse rsp = myclient.Execute(req); Console.WriteLine(rsp.Body); if (rsp.User != null) { //Console.WriteLine(rsp.User.Nick); //Console.WriteLine(ObjectToString(rsp.User)); List<User> list = new List<User>(); list.Add(rsp.User); //对应字段的属性没有“_”字符的 this.winGridView1.DisplayColumns = req.Fields.Replace("_", ""); this.winGridView1.DataSource = list; } } private void TestItemGet() { //单独商品的信息 Console.WriteLine("单独商品的信息"); ItemGetRequest req = new ItemGetRequest(); req.Fields="num_iid,title,nick,pic_path,cid,price,type,location.city,delist_time,post_fee"; req.NumIid = 3838293428L; ItemGetResponse itemRsp = myclient.Execute(req); if (itemRsp != null && itemRsp.Item != null) { //Console.WriteLine(itemRsp.Item.Nick); //Console.WriteLine(ObjectToString(itemRsp.Item)); List<Item> list = new List<Item>(); list.Add(itemRsp.Item); //对应字段的属性没有“_”字符的 this.winGridView1.DisplayColumns = req.Fields.Replace("_", ""); this.winGridView1.DataSource = list; } } private void TestItemSearch() { //查询商品信息(不含类别) Console.WriteLine("查询商品信息(不含类别)"); ItemsGetRequest req = new ItemsGetRequest(); //,location.city,location.state"; req.Fields = "num_iid,title,nick,pic_url,cid,price,type,delist_time,post_fee,score,volume"; req.Q = "笔记本"; //itemReq.Cid = "14"; req.OrderBy = "volume:desc"; req.PageNo = 1; req.PageSize = 40; //显示列表信息 ItemsGetResponse itemRsp = myclient.Execute(req); if (itemRsp != null) { //Console.WriteLine(itemRsp.TotalResults); //foreach (Item item in itemRsp.Items) //{ // Console.WriteLine(ObjectToString(item)); //} //对应字段的属性没有“_”字符的 this.winGridView1.DisplayColumns = req.Fields.Replace("_", ""); this.winGridView1.DataSource = itemRsp.Items; }