Exemplo n.º 1
0
        public void SendApiPostDataLogTest()
        {
            var url  = "http://www.senparc.com";
            var data = Guid.NewGuid().ToString();//随机字符串

            SenparcTrace.SendApiLog(url, data);
            Assert.IsTrue(UnitTestHelper.CheckKeywordsExist(LogFilePath, url, data));
        }
Exemplo n.º 2
0
        public void SendApiLogTest()
        {
            var url    = "http://www.senparc.com";
            var result = Guid.NewGuid().ToString();//随机字符串

            SenparcTrace.SendApiLog(url, result);

            var dt1 = SystemTime.Now;

            while (SystemTime.DiffTotalMS(dt1) < 800)
            {
                //等待队列执行
            }

            Assert.IsTrue(UnitTestHelper.CheckKeywordsExist(LogFilePath, url, result));
        }
Exemplo n.º 3
0
        public void SendApiPostDataLogTest()
        {
            var url  = "http://www.senparc.com";
            var data = Guid.NewGuid().ToString();//随机字符串

            SenparcTrace.SendApiLog(url, data);

            var dt1 = SystemTime.Now;

            while ((SystemTime.Now - dt1).TotalMilliseconds < 800)
            {
                //等待队列执行
            }

            Assert.IsTrue(UnitTestHelper.CheckKeywordsExist(LogFilePath, url, data));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 向需要AccessToken的API发送消息的公共方法
        /// </summary>
        /// <param name="accessToken">这里的AccessToken是通用接口的AccessToken,非OAuth的。如果不需要,可以为null,此时urlFormat不要提供{0}参数</param>
        /// <param name="urlFormat"></param>
        /// <param name="data">如果是Get方式,可以为null。在POST方式中将被转为JSON字符串提交</param>
        /// <param name="sendType">发送类型,POST或GET,默认为POST</param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <param name="checkValidationResult">验证服务器证书回调自动验证</param>
        /// <param name="jsonSetting">JSON字符串生成设置</param>
        /// <returns></returns>
        public static async Task <T> SendAsync <T>(IServiceProvider serviceProvider, string accessToken, string urlFormat, object data,
                                                   HttpRequestType sendType   = HttpRequestType.POST, int timeOut = CO2NET.Config.TIME_OUT,
                                                   bool checkValidationResult = false, JsonSetting jsonSetting    = null)
        {
            try
            {
                var url = string.IsNullOrEmpty(accessToken) ? urlFormat : string.Format(urlFormat, accessToken.AsUrlData());

                switch (sendType)
                {
                case HttpRequestType.GET:
                    return(await CO2NET.HttpUtility.Get.GetJsonAsync <T>(serviceProvider, url, afterReturnText : getFailAction).ConfigureAwait(false));

                case HttpRequestType.POST:
                    var jsonString = SerializerHelper.GetJsonString(data, jsonSetting);
                    using (MemoryStream ms = new MemoryStream())
                    {
                        var bytes = Encoding.UTF8.GetBytes(jsonString);
                        await ms.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);

                        ms.Seek(0, SeekOrigin.Begin);

                        //WeixinTrace.SendApiPostDataLog(url, jsonString);//记录Post的Json数据
                        SenparcTrace.SendApiLog(url, jsonString);    //记录Post的Json数据   TODO:为  API 提供 NeuChar 层面的日志记录

                        //PostGetJson方法中将使用WeixinTrace记录结果
                        return(await CO2NET.HttpUtility.Post.PostGetJsonAsync <T>(serviceProvider, url, null, ms,
                                                                                  timeOut : timeOut,
                                                                                  afterReturnText : postFailAction,
                                                                                  checkValidationResult : checkValidationResult).ConfigureAwait(false));
                    }

                default:
                    throw new ArgumentOutOfRangeException(nameof(sendType));
                }
            }
            catch (NeuCharAppApiRequestException ex)
            {
                ex.Url = urlFormat;
                throw;
            }
        }