private void SendApiRequest(IChinaAlibabaApi api, object args, Action <Exception, string> callback)
        {
            string apiUri = api.GetRequestUri(this.m_appKey);
            IDictionary <string, string> arguments = AlibabaHelper.GetArgumentsDictionary(args);

            if (api.NeedAuthroized)
            {
                arguments[ACCESS_TOKEN_ARGUMENT_NAME] = this.m_accessToken;
            }
            if (api.NeedTimestamp)
            {
                arguments[TIMESTAMP_ARGUMENT_NAME] = (DateTime.Now - this.m_timestampBase).TotalMilliseconds + this.m_timeError.ToString();
            }
            if (api.NeedSignature)
            {
                arguments[SIGNATURE_ARGUMENT_NAME] = AlibabaHelper.GetApiSignature(apiUri, arguments, this.m_appSecret);
            }

            this.SendPostRequest(apiUri, arguments, api.Encoding, callback);
        }
Exemplo n.º 2
0
        public void GetArgumentsDictionaryTest()
        {
            DateTime now  = DateTime.Now;
            object   args = new {
                a = 13,
                b = true,
                c = "xphter",
                d = now,
                e = new int[] {
                    123, 456,
                },
                f = new string[] {
                    "123", "456",
                },
            };
            IDictionary <string, string> actual = AlibabaHelper.GetArgumentsDictionary(args);

            Assert.AreEqual(actual["a"], "13");
            Assert.AreEqual(actual["b"], "true");
            Assert.AreEqual(actual["c"], "xphter");
            Assert.AreEqual(actual["d"], AlibabaHelper.NetTimeToAlibabaTime(now));
            Assert.AreEqual(actual["e"], "[123,456]");
            Assert.AreEqual(actual["f"], "[\"123\",\"456\"]");
        }