/// <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); }