Esempio n. 1
0
        /// <summary>
        /// ASync
        /// </summary>
        /// <returns>T</returns>
        public static async Task <Response> AsyncCallEncrypt <Response, Request>(Request req) where Response : class, IDisposable, new()
        {
            Response    response  = new Response();
            WebClientEx wc        = new WebClientEx();
            string      targetUrl = null;

            try
            {
                //해더 셋팅
                wc.Encoding = Encoding.UTF8;
                wc.Headers.Add("Accept-Language", "utf-8");
                wc.Headers.Add("Accept", "text/html, application/xhtml+xml, */*");
                wc.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");

                //파라미터 직렬화
                string sReqSerial = new JavaScriptSerializer().Serialize(req);
                //암호화
                string sEncrpt = EncodingLib.AesEncrypt(sReqSerial, RequestBaseModel.GidParam);

                NameValueCollection nvc = new NameValueCollection();
                nvc.Add("encStr", sEncrpt);
                nvc.Add("clientPe", RequestBaseModel.RsaParam);
                wc.QueryString = nvc;

                //상세 API URL 설정
                targetUrl = "bt.arbitrage.listen.dp/proc.go";

                //API 요청
                byte[] bt = await wc.UploadValuesTaskAsync(ConfigLib.ApiUrl + targetUrl, new NameValueCollection());

                var dy = new JavaScriptSerializer().Deserialize <dynamic>(Encoding.UTF8.GetString(bt));

                //API 결과 코드 값
                string resultStrCode = dy["resultStrCode"];
                //API 결과 메시지
                string resultMsg = dy["resultMsg"];

                if (resultStrCode == "000")
                {
                    response = new JavaScriptSerializer().Deserialize <Response>(Encoding.UTF8.GetString(bt));
                }
                else
                {
                    if (resultStrCode != "000")
                    {
                        //SysLog.Info("API resultMsg : " + resultMsg);
                    }
                }
            }
            catch (Exception ex)
            {
                SysLog.Error("DP : " + targetUrl);
                throw ex;
            }
            finally
            {
                wc.Dispose();
                response.Dispose();
            }
            return(response);
        }