예제 #1
0
        public Resultado Executar(Config objConfig, XmlDocument XmlFila = null)
        {
            Resultado objResultado = new Resultado();

            XmlDocument XmlRetorno = new XmlDocument();
            XmlDocument XmlEntrada = new XmlDocument();

            try
            {
                XmlEntrada.LoadXml(CriarSoapDeEntrada(objConfig, XmlFila == null ? null : XmlFila));

                if (!string.IsNullOrEmpty(objConfig.ExecucaoInicial))
                {
                    List <object> lst = new List <object>();
                    lst.Add(XmlEntrada);
                    lst.Add(objConfig);
                    XmlEntrada = (XmlDocument) new Integrador.Utils.Generic.Invoke().Exec(objConfig.ExecucaoInicial.Split(';')[0], objConfig.ExecucaoInicial.Split(';')[1], lst, objConfig.ConnectionString);
                    XmlDeEntradaParametros.Clear();
                    XmlDeEntradaParametros.Append(XmlEntrada.GetElementsByTagName(objConfig.Metodo)[0].InnerXml);
                }

                HttpWebRequest request = CriarWebRequest(objConfig);

                using (Stream stream = request.GetRequestStream())
                {
                    XmlEntrada.Save(stream);
                }

                try
                {
                    using (WebResponse response = request.GetResponse())
                    {
                        using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                        {
                            string soapResult = rd.ReadToEnd();
                            XmlRetorno.LoadXml(soapResult);
                        }
                    }
                }
                catch (WebException webEx)
                {
                    string errorText = "[Sem conteúdo de resposta]";

                    if (webEx != null && webEx.Response != null && webEx.Response.ContentLength > 0)
                    {
                        using (StreamReader rd = new StreamReader(webEx.Response.GetResponseStream()))
                        {
                            errorText = "Connection Status  **  " + Monitor.Instance.GetStatus() + "  **  Exception: **  " + webEx.Message + "  **  Content: **  " + rd.ReadToEnd() + "  **";
                        }
                    }
                    else
                    {
                        errorText = "Connection Status  **  " + Monitor.Instance.GetStatus() + "  **  Exception: **  " + webEx.Message + "  **  Content: (no content)";
                    }

                    throw new Exception(errorText);
                }
                catch (Exception e)
                {
                    throw new Exception("Connection Status  **  " + Monitor.Instance.GetStatus() + " ** Exception:  ** " + e.Message + "  ** ", e);
                }

                if (!string.IsNullOrEmpty(objConfig.ExecucaoFinal))
                {
                    List <object> lst = new List <object>();
                    lst.Add(XmlRetorno);
                    lst.Add(XmlFila);
                    XmlRetorno = (XmlDocument) new Integrador.Utils.Generic.Invoke().Exec(objConfig.ExecucaoFinal.Split(';')[0], objConfig.ExecucaoFinal.Split(';')[1], lst, objConfig.ConnectionString);
                }

                objResultado = new Resultado()
                {
                    Mensagem = "WebService executado com sucesso.", ElementoSeparador = objConfig.ElementoSeparador, ParametrosEnvio = XmlDeEntradaParametros.ToString(), RespostaXmlCompleta = XmlRetorno, TipoMensagem = Resultado.Tipo.Sucesso
                };
            }
            catch (Exception ex)
            {
                throw new Exception("\r\n\r\nXml de Erro:\r\n" + ex.Message, ex);
            }
            return(objResultado);
        }
예제 #2
0
        public Resultado Executar(Config objConfig, string XmlFila)
        {
            Resultado objResultado = new Resultado();

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(XmlFila);
                objResultado = Executar(objConfig, doc);
            }
            catch (Exception ex)
            {
                objResultado = new Resultado()
                {
                    Mensagem = "XMLEntrada: \r\n" + XmlDeEntrada.ToString() + "\r\n" + ex.Message + " \r\n\r\n  " + ex.StackTrace, ParametrosEnvio = XmlDeEntradaParametros.ToString(), TipoMensagem = Resultado.Tipo.Erro
                };
                //ServiceLog.LogError(String.Format("Erro: Message: {0} - StackTrace: {1} - XmlEntrada: {2} \r\n\r\nINNER EXCEPTION:\r\n{3}", ex.Message, ex.StackTrace, XmlDeEntrada.ToString(), (ex.InnerException != null) ? ex.InnerException.Message : "(Sem mais informações)"));
            }
            return(objResultado);
        }