开发者社区> walb呀> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

淘宝API开发系列---淘宝API的测试及使用2

简介:
+关注继续查看

继续前面一篇随笔《淘宝API开发系列---淘宝API的测试及使用》,来继续介绍淘宝API的具体代码开发部分,上篇主要是介绍淘宝SDK开发的一些流程及必备的信息,以及掌握如何学会利用API文档、淘宝API测试工具来获取我们所需的数据,其中我一般倾向于获取Json数据,然后进行分析,其中Json数据可以通过JsonView工具(http://jsonviewer.codeplex.com/)进行格式化显示,方便我们了解和区分各个属性的信息。另外淘宝的SDK里面,封装了很多对象,我们通过数据就可以获取到相关的信息了,不过注意的就是,我们每个接口调用,都要传入Fields的属性,如果我们没有指定相应的属性字段,那么接口返回的数据,就没有这项的,淘宝SDK的对象属性就会为空。

 

 通过以上的工具,我们就能可视化属性的信息了,对接口数据的理解就更加清晰,首先我们来看看我测试例子的运行效果如下所示。

 

 其中上面例子的代码如下所示。

        private void TestUserGet()
        {
            //单独用户的信息
            Console.WriteLine("单独用户的信息");
            UserGetRequest req = new UserGetRequest(); //实例化具体API对应的Request类
            req.Fields = "user_id,nick,created,buyer_credit,type,sex";
            req.Nick = "wuhuacong";
            UserGetResponse rsp = myclient.Execute(req);//执行API请求并将该类转换为response对象
            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();
            req.Fields = "num_iid,title,nick,pic_url,cid,price,type,delist_time,post_fee,score,volume";//,location.city,location.state";
            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;
            }

        } 

对于需要获取用户私密信息,如买入卖出等重要信息,还需要获取用户的SessionKey的,我们可以通过下面接口函数,弹出登录窗口,然后登录后,定位到对应的App应用页面,然后页面加载的时候,获取到对应的SessionKey、

 

 

 
        /// <summary>
        
/// 判断是否顺利获取SessionKey
        
/// </summary>
        
/// <returns></returns>
        private string GetAuthorizeCode(string appKey)
        {
            string authorizeCode = "";
            FrmAuthorized dlg = new FrmAuthorized();
            dlg.AppKey = appkey;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                authorizeCode = dlg.AuthrizeCode;
            }
            if (string.IsNullOrEmpty(authorizeCode)) return null;

            string sessionKeyUrl = string.Format(TOP_AUTH_URL, authorizeCode);
            HttpHelper helper = new HttpHelper();
            string html = helper.GetHtml(sessionKeyUrl);
            //格式
            
//top_appkey=1142&top_parameters=xxx&top_session=xxx&top_sign=xxx&encode=utf-8
            string reg = ".*?&top_session=(?<session>.*?)&top_sign";
            string sessionKey = CRegex.GetText(html, reg, 1);
            return sessionKey;

 最后我们看看其中获取已买记录的接口实现如下所示。

        private void TestBuyInfo()
        {
            if (string.IsNullOrEmpty(sessionKey))
            {
                sessionKey = GetAuthorizeCode(this.appkey);
            }

            //买入交易
            Console.WriteLine("买入交易");
            TradesBoughtGetRequest req = new TradesBoughtGetRequest();
            //req.Fields = "tid,title,price,type,num_iid,seller_nick,buyer_nick,status";
            req.Fields = "tid,title,price,type,num_iid,seller_nick,buyer_nick,status,receiver_state,receiver_city,receiver_district,receiver_address";
            req.PageNo = 1L;
            req.PageSize = 40L;
            TradesBoughtGetResponse rsp = myclient.Execute(req, sessionKey);
            if (rsp != null)
            {
                //Console.WriteLine(rsp.Trades.Count);
                
//if (rsp.Trades.Count > 0)
                
//{
                
//    foreach (Trade item in rsp.Trades)
                
//    {
                
//        Console.WriteLine(ObjectToString(item));
                
//    }
                
//}
                this.winGridView1.DisplayColumns = req.Fields.Replace("_""");//对应字段的属性没有“_”字符的
                this.winGridView1.DataSource = rsp.Trades;
            }

本文转自博客园伍华聪的博客,原文链接:淘宝API开发系列---淘宝API的测试及使用2,如需转载请自行联系原博主。




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WEB音频API
本文转载至 http://www.webhek.com/web-audio-api 很偶然的,在一个微信公众号里面,看到了这样的一篇文章。 WEB音频API。作者分享技术的优良品质值得我们学习。
858 0
Web API路由
译者:jiankunking 出处:http://blog.csdn.net/jiankunking 原文地址 本文讲解ASP.NET Web API如何将HTTP请求路由至控制器。 如果你熟悉ASP.NET MVC,Web API路由与MVC路由非常相似。主要差别是Web API使用HTTP方法,而不是URI路径来选择Action。你也可以按照之前配置M
2192 0
Web APi之消息处理管道(五)
前言 MVC有一套请求处理的机制,当然Web API也有自己的一套消息处理管道,该消息处理管道贯穿始终都是通过HttpMessageHandler来完成。我们知道请求信息存在 RequestMessage 中,而响应信息则存在 ResponseMessage 中,当请求信息进入到管道中,此时HttpMessageHandler会对此进行相应的处理,当执行到控制器上的方法时此时就会进行响应,生成的响应信息HttpResponseMessage就会逆向通过HttpMessageHandler依次进行处理最终返回给客户端。
778 0
Web Api简单用法
ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器、移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RESTful 服务的理想平台。
939 0
Web API 简单示例
原文:Web API 简单示例 一、RESTful和Web API   Representational State Transfer (REST) is a software architecture style consisting of guidelines and best practices for creating scalable web services.
982 0
****Web API 版本控制的几种方式
个人建议:用content type,即放在Header里面!比如加一个Version:1.4.3   这篇文章写得很好,介绍了三种实现web api版本化的三种方式。我从评论里又收集到两种方式,所以一共是5种: 方式一:利用URL   ? 1 2 HTTP GET: https://haveibeenpwned.
740 0
MVC4 WebAPI(一)
不管是因为什么原因,结果是在新出的MVC中,增加了WebAPI,用于提供REST风格的WebService,个人比较喜欢REST风格的WebService,感觉比SOAP要轻量级一些,而且对客户端的要求也更少,更符合网络数据传输的一般模式,客户端完全摆脱了代理和管道来直接和WebService进行交...
1089 0
Web API 版本控制的几种方式
http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html 这篇文章写得很好,介绍了三种实现web api版本化的三种方式。
1172 0
+关注
1038
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载