// GET: Controller/APIModule public ActionResult GetJsonResults() { var APIData = RenderingContext.Current.Rendering.Item; APIModule datasource = new APIModule(); datasource.APIUrl = APIData.Fields["URL"].ToString(); datasource.SelectedHeaderValues = APIData.Fields["Select Header Parameters"]; datasource.HeaderValues = selectedMultilistValues(datasource.SelectedHeaderValues); datasource.SelectedInputList = APIData.Fields["Select Input Parameters"]; datasource.InputParameters = selectedChildMultilistValues(datasource.SelectedInputList); var apiResult = InvokeJson <dynamic>(datasource); string JsonResult = "Result:" + Convert.ToString(apiResult); datasource.OutputParameters = JsonResult; Log.Info("Before Editing", this); using (new SecurityDisabler()) { APIData.Editing.BeginEdit(); APIData.Fields["ApiOutput"].Value = JsonResult; APIData.Editing.EndEdit(); } Log.Info("After Editing", this); return(View("~/Areas/Views/APIModule.cshtml", datasource)); }
public static T InvokeJson <T>(APIModule requestData) where T : class { try { Uri uri = new Uri(requestData.APIUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "application/json"; foreach (var headerInput in requestData.HeaderValues) { request.Headers.Add(headerInput.Key, headerInput.Value); } string sb = JsonConvert.SerializeObject(requestData.InputParameters); byte[] data = Encoding.ASCII.GetBytes(sb); Stream newStream = request.GetRequestStream(); newStream.Write(data, 0, data.Length); newStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); if (stream != null) { StreamReader sr = new StreamReader(stream); string jsonResponse = sr.ReadToEnd(); sr.Close(); return((T)JsonConvert.DeserializeObject(jsonResponse, typeof(T))); } return(null); } catch (Exception e) { Sitecore.Diagnostics.Log.Error($"APIModule: Exception '{e.Message}' - '{e.StackTrace}'", e); Console.WriteLine(e.Message); return(null); } }