淘宝开放平台.NET版SDK top4net

设计原则

   1. 容易维护扩展(不需要修改主类就可以添加新的API支持)
   2. 注入型解释器(依据不同的返回格式注入相应的解释器)
   3. 集中管理请求参数与参数映射
   4. 以异常的方式来管理错误的响应
   5. 使用泛型来做强类型编程
   6. 多协议扩展支持(REST, RPC, SOAP, etc)

调用方式:

 ITopClient client = new TopRestClient("http://gw.api.tbsandbox.com/router/rest", "test", "test", "json");
 UserGetRequest request = new UserGetRequest();
 request.Fields = "user_id,nick,sex,created,location";
 request.Nick = "tbtest520";
 User user = client.Execute(request, new UserGetJsonParser());



aspx:

    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        获得淘宝授权: &nbsp;<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="LinkButtonhttp://open.taobao.com/isv/authorize.php?appkey=test">LinkButton</asp:LinkButton>
        &nbsp; &nbsp;<br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><div>
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
        </div>
    </form>

.cs

protected void Button1_Click(object sender, EventArgs e)
    {
        string sessionKey = getSessionKey(TextBox1.Text);
        if (sessionKey.StartsWith("Error"))
        {
            Response.Write("<script>alert('获取SessionKey失败,请更换您的授权码')</script>");<
            return;
        }

        DataTable table = new DataTable();
        DataColumn c1 = new DataColumn("订单编号", typeof(string));
        table.Columns.Add(c1);
        DataColumn c2 = new DataColumn("买家昵称", typeof(string));
        table.Columns.Add(c2);
        DataColumn c3 = new DataColumn("卖家昵称", typeof(string));
        table.Columns.Add(c3);
        DataColumn c4 = new DataColumn("订单状态", typeof(string));
        table.Columns.Add(c4);
        DataColumn c5 = new DataColumn("商品标题", typeof(string));
        table.Columns.Add(c5);
        DataColumn c6 = new DataColumn("价格", typeof(string));
        table.Columns.Add(c6);
        DataColumn c7 = new DataColumn("数量", typeof(string));
        table.Columns.Add(c7);

        TopXmlRestClient topClient = new TopXmlRestClient("http://gw.api.tbsandbox.com/router/rest", "test", "test");
        TradesSoldGetRequest req = new TradesSoldGetRequest();
        req.Fields = "tid,seller_nick,buyer_nick,status,orders.title,orders.price,orders.num";
        req.PageSize = 18;
        ResponseList<Trade> rsp = topClient.GetSoldTrades(req, sessionKey);

        if (rsp.Content == null || rsp.Content.Count < 1)
        {
            Response.Write("<script>alert('此会员没有订单,请更换其他会员帐号获取授权码重试')</script>");
            return;
        }

        List<Trade> trades = rsp.Content;
        foreach (Trade trade in trades)
        {
            DataRow r1 = table.NewRow();
            r1["卖家昵称"] = trade.SellerNick;
            r1["买家昵称"] = trade.BuyerNick;
            r1["订单编号"] = trade.Tid;
            r1["订单状态"] = trade.Status;
            if (trade.OrderList != null && trade.OrderList.Count > 0)
            {
                Order order = trade.OrderList[0];
                r1["商品标题"] = order.ItemTitle;
                r1["价格"] = order.ItemPrice;
                r1["数量"] = order.ItemNum;
            }
            table.Rows.Add(r1);
        }


        GridView1.DataSource = table;
        GridView1.DataBind();
    }
    public string getSessionKey(string auth_code)
    {
        try
        {
            // Create a request for the URL.         
            WebRequest request = WebRequest.Create("http://container.api.tbsandbox.com/container?authcode=" + auth_code);

            // Get the response.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            if (response.StatusCode != HttpStatusCode.OK) return "Error";

            // Get the stream containing content returned by the server.
            Stream dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd();
            string[] sArray = responseFromServer.Split('&');

            foreach (string i in sArray)
            {
                if (i.ToString().StartsWith("top_session")) return i.ToString().Substring(i.ToString().IndexOf("=") + 1);
            }

            // Display the content.
            // Console.WriteLine (responseFromServer);
            // Cleanup the streams and the response.
            reader.Close();
            dataStream.Close();
            response.Close();

            return responseFromServer;
        }
        catch (WebException e)
        {
            return "Error:" + e.Status;
        }
        catch (Exception e)
        {
            return "Error:" + e.Message;
        }
    }

当然系统中必须引入dll:Newtonsoft.Json.dll;Top4Net.dll


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值