/// <summary>
        /// Effettua la chiamata e restituisce il risultato
        /// </summary>
        /// <param name="webClient"></param>
        /// <param name="call"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private ExecutionInfo ExecuteCall(WebClient webClient, string call, IDictionary <string, string> parameters)
        {
            ExecutionInfo execInfo = new ExecutionInfo
            {
                Name = call
            };

            DateTime startTime = DateTime.Now;

            CallInfo callInfo = CallInfo.Get(call);

            if (callInfo == null)
            {
                execInfo.ExecTime = TimeSpan.FromSeconds(0);
                execInfo.Failed   = true;
                return(execInfo);
            }
            try
            {
                ParseParameters(callInfo, out string request, out string body, parameters);

                //TODO: in base alla configurazione, effettuare una GET o una POST
                string res;

                switch (callInfo.Method)
                {
                case "GET":
                    res = webClient.DownloadString(request);
                    break;


                default:
                    res = webClient.UploadString(request, callInfo.Method, body);
                    break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                execInfo.Failed = true;
            }


            //TODO: recuperare il risultato ed eventualmente aggiungere o modificare i parametri sul dictionary
            execInfo.ExecTime = DateTime.Now - startTime;
            return(execInfo);
        }