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