public object callSoapQuery(TTLAPIRequest form) { TTLITradeWSDEV.ItradeWebServicesClient soap = new TTLITradeWSDEV.ItradeWebServicesClient(); TTLITradeWSDEV.requestHeaderType reqHeader = new TTLITradeWSDEV.requestHeaderType(); TTLITradeWSDEV.responseHeaderType respHeader = new TTLITradeWSDEV.responseHeaderType(); TTLITradeWSDEV.BaseRequest_CType query = null; TTLITradeWSDEV.BaseResponse_CType response = null; if (form.name != null) { MethodInfo mth = soap.GetType().GetMethod(form.name); ParameterInfo[] pms = mth.GetParameters(); int i = 0; foreach (ParameterInfo _param in pms) { var fullName = _param.ParameterType.FullName; fullName = fullName.Replace("&", ""); Type type = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .FirstOrDefault(t => t.FullName == fullName); var obj = Activator.CreateInstance(type); if (typeof(requestHeaderType).IsAssignableFrom(obj.GetType())) { reqHeader = (requestHeaderType)obj; } if (typeof(BaseRequest_CType).IsAssignableFrom(obj.GetType())) { query = (BaseRequest_CType)obj; } if (typeof(BaseResponse_CType).IsAssignableFrom(obj.GetType())) { response = (BaseResponse_CType)obj; } i++; } } soap.ClientCredentials.UserName.UserName = form.credentials.username; soap.ClientCredentials.UserName.Password = form.credentials.password; reqHeader.version = form.header.version; reqHeader.traceNo = form.header.traceNo; if (form.body != null) { string json = new JavaScriptSerializer().Serialize(form.body); json = JsonConvert.SerializeObject(form.body); query = (BaseRequest_CType)JsonConvert.DeserializeObject(json, query.GetType()); /* * var keys = form.body.Keys; * foreach (string key in keys) * { * var val = form.body[key]; * if (val != null) * { * * var property = query.GetType().GetProperty(key); * if (property == null) * { * continue; * } * * if (property.PropertyType == typeof(string) || property.PropertyType == typeof(int) || property.PropertyType == typeof(bool) || property.PropertyType == typeof(decimal) || property.PropertyType == typeof(float) || property.PropertyType == typeof(double)) || { || property.SetValue(query, Convert.ChangeType(val, property.PropertyType), null); || } || else || { || object ob = Newtonsoft.Json.JsonConvert.DeserializeObject<property.PropertyType>(Json Object); || property.SetValue(query, ) || } || } ||} */ } try { MethodInfo mth = soap.GetType().GetMethod(form.name); List <object> parameters = new List <object> { reqHeader, query, null }; var p = parameters.ToArray(); object resp = mth.Invoke(soap, p); if (respHeader.GetType().IsAssignableFrom(resp.GetType())) { respHeader = (responseHeaderType)resp; } object res = p[2]; return(res); } catch (Exception e) { throw e; } }
public IHttpActionResult DemoSubmitForm1(RequestForm1 param) { Dictionary <string, string> errors = new Dictionary <string, string>(); if (param.a == null || param.a.Equals("")) { errors.Add("a", "F001"); } ; if (param.b == null || param.b.Equals("")) { errors.Add("b", "F001"); } ; if (param.c == 0) { errors.Add("c", "F001"); } ; if (param.date == null || param.date.Equals("")) { errors.Add("date", "F001"); } ; DateTime?dateTime = null; String recvDate = ""; try { dateTime = BuildDateTimeFromYAFormat(param.date); if (dateTime != null) { recvDate = dateTime.GetValueOrDefault().ToString(); } } catch (FormatException e) { } if (errors.Count > 0) { return(Ok(BaseResponse.MakeResponse("F000", errors))); } var _params = GetType().GetMethod("submitSoapQuery_accountBalanceEnquiry").GetParameters(); var paramStr = ""; foreach (ParameterInfo _param in _params) { paramStr += _param.ParameterType; Type type = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .FirstOrDefault(t => t.FullName == _param.ParameterType.FullName); var obj = Activator.CreateInstance(type); if (obj != null) { paramStr += obj.GetType().Name; } } TTLITradeWSDEV.ItradeWebServicesClient soap = new TTLITradeWSDEV.ItradeWebServicesClient(); MethodInfo mth = soap.GetType().GetMethod("accountBalanceEnquiry"); ParameterInfo[] pms = mth.GetParameters(); int i = 0; foreach (ParameterInfo _param in pms) { var fullName = _param.ParameterType.FullName; fullName = fullName.Replace("&", ""); Type type = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .FirstOrDefault(t => t.FullName == fullName); var obj = Activator.CreateInstance(type); if (typeof(requestHeaderType).IsAssignableFrom(obj.GetType())) { requestHeaderType header = (requestHeaderType)obj; paramStr += header.GetType(); } if (typeof(BaseRequest_CType).IsAssignableFrom(obj.GetType())) { BaseRequest_CType query = (BaseRequest_CType)obj; paramStr += query.GetType(); } if (typeof(BaseResponse_CType).IsAssignableFrom(obj.GetType())) { BaseResponse_CType resp = (BaseResponse_CType)obj; paramStr += resp.GetType(); } i++; } //Assembly assembly = Assembly.Load(Assembly.GetExecutingAssembly().GetName().Name); return(Ok(BaseResponse.MakeResponse(new string[] { param.a, param.b, param.c + "", recvDate, "A", param.dict["aaaa"], paramStr }))); }
public T callSoapQuery <T>(TTLAPIRequest form) { TTLITradeWSDEV.ItradeWebServicesClient soap = new TTLITradeWSDEV.ItradeWebServicesClient(); TTLITradeWSDEV.requestHeaderType reqHeader = new TTLITradeWSDEV.requestHeaderType(); TTLITradeWSDEV.responseHeaderType respHeader = new TTLITradeWSDEV.responseHeaderType(); TTLITradeWSDEV.BaseRequest_CType query = null; TTLITradeWSDEV.BaseResponse_CType response = null; if (form.name != null) { MethodInfo mth = soap.GetType().GetMethod(form.name); ParameterInfo[] pms = mth.GetParameters(); int i = 0; foreach (ParameterInfo _param in pms) { var fullName = _param.ParameterType.FullName; fullName = fullName.Replace("&", ""); Type type = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .FirstOrDefault(t => t.FullName == fullName); var obj = Activator.CreateInstance(type); if (typeof(requestHeaderType).IsAssignableFrom(obj.GetType())) { reqHeader = (requestHeaderType)obj; } if (typeof(BaseRequest_CType).IsAssignableFrom(obj.GetType())) { query = (BaseRequest_CType)obj; } if (typeof(BaseResponse_CType).IsAssignableFrom(obj.GetType())) { response = (BaseResponse_CType)obj; } i++; } } soap.ClientCredentials.UserName.UserName = form.credentials.username; soap.ClientCredentials.UserName.Password = form.credentials.password; reqHeader.version = form.header.version; reqHeader.traceNo = form.header.traceNo; if (form.body != null) { string json = JsonConvert.SerializeObject(form.body, Formatting.None, new JsonSerializerSettings() { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore }); query = (BaseRequest_CType)JsonConvert.DeserializeObject(json, query.GetType()); AuditLogDbContext.getInstance().createAuditLog(new WebApplication2.Models.AuditLog { action = "[TTL API TEST]", remarks = "1. " + form.name, }); /* * var keys = form.body.Keys; * foreach (string key in keys) * { * var val = form.body[key]; * if (val != null) * { * * var property = query.GetType().GetProperty(key); * if (property == null) * { * continue; * } * * if (property.PropertyType == typeof(string) || property.PropertyType == typeof(int) || property.PropertyType == typeof(bool) || property.PropertyType == typeof(decimal) || property.PropertyType == typeof(float) || property.PropertyType == typeof(double)) || { || property.SetValue(query, Convert.ChangeType(val, property.PropertyType), null); || } || else || { || object ob = Newtonsoft.Json.JsonConvert.DeserializeObject<property.PropertyType>(Json Object); || property.SetValue(query, ) || } || } ||} */ } try { MethodInfo mth = soap.GetType().GetMethod(form.name); List <object> parameters = new List <object> { reqHeader, query, null }; var p = parameters.ToArray(); try { object resp = mth.Invoke(soap, p); AuditLogDbContext.getInstance().createAuditLog(new WebApplication2.Models.AuditLog { action = "[TTL API TEST]", remarks = "Response: " + resp.ToString(), is_private = true, }); if (respHeader.GetType().IsAssignableFrom(resp.GetType())) { respHeader = (responseHeaderType)resp; } T res = (T)p[2]; return(res); } catch (Exception e) { AuditLogDbContext.getInstance().createAuditLog(new WebApplication2.Models.AuditLog { action = "[TTL API TEST]", remarks = "Response Format Parsing Error: " + e.Message + " " + form.name, is_private = true, }); throw e; } } catch (Exception e) { AuditLogDbContext.getInstance().createAuditLog(new WebApplication2.Models.AuditLog { action = "[TTL API TEST]", remarks = "Generic Error: " + e.Message + " " + form.name, is_private = true, }); throw e; } }