Basicamente os métodos abaixo são os que fazem todo o "trabalho braçal" do Epp, enviando comandos e recebendo respostas.<br>Eles estão dentro da classe Acao, que é a superclasse de todos os comandos Epp. Basicamente utilizei a biblioteca que o Registro.Br disponibiliza em C++ para criar a minha arquitetura e até alguns métodos dela.<br>
<br>Qualquer dúvida, pode entrar em contato por este e-mail.<br><br>         /// <summary><br>        /// Método utilizado para retornar um template xml de acordo com o nome do template passado por parâmetro<br>        /// </summary><br>
        /// <param name="filename">O nome do arquivo Xml a ser carregado</param><br>        protected void LoadXmlTemplate(string filename) <br>        {<br>            string sLine = "";<br>
            this._xml = "";<br><br>            if (filename != "")<br>            {<br>                StreamReader objReader = new StreamReader(CAMINHO_TEMPLATES_XML + filename);<br><br>                while (sLine != null)<br>
                {<br>                    sLine = objReader.ReadLine();<br>                    if (sLine != null && sLine != "")<br>                    {<br>                        this._xml += " " + sLine;<br>
                    }<br>                }<br>                objReader.Close();<br>            }<br>        }<br><br>        /// <summary><br>        /// Método responsável por enviar o comando para o <a href="http://registro.br">registro.br</a> e receber a resposta do mesmo<br>
        /// </summary><br>        /// <returns>Retorna uma string contendo a resposta do servidor em Xml</returns><br>        protected string Executar()<br>        {<br>            try<br>            {<br>
                // enviar XML<br>                byte[] bytesXml = Encoding.UTF8.GetBytes(this._xml.Trim());<br>                this.EscreverBuffer(bytesXml.Length + 4);<br>                GerenciadorConexao.StreamSSL.Write(bytesXml, 0, bytesXml.Length);<br>
                GerenciadorConexao.StreamSSL.Flush();<br><br>                // receber XML<br>                int len = LerBuffer();<br>                byte[] bytes = this.LerMensagem(len - 4);<br><br>                return Encoding.UTF8.GetString(bytes, 0, bytes.Length);<br>
            }<br>            catch (System.Exception ex) <br>            {<br>                GerenciadorConexao.StreamSSL = null;<br>                throw ex;<br>            }<br>        }<br><br>        /// <summary><br>
        /// Método responsável por escrever o buffer da SSLStream<br>        /// </summary><br>        /// <param name="buf_sz">O tamanho do buffer a ser escrito</param><br>        private void EscreverBuffer(int buf_sz)<br>
        {<br>            byte[] out_buf = new byte[4];<br>            out_buf[0] = (byte)(0xff & (buf_sz >> 24));<br>            out_buf[1] = (byte)(0xff & (buf_sz >> 16));<br>            out_buf[2] = (byte)(0xff & (buf_sz >> 8));<br>
            out_buf[3] = (byte)(0xff & buf_sz);<br><br>            GerenciadorConexao.StreamSSL.Write(out_buf, 0, 4);<br>        }<br><br>        /// <summary><br>        /// Método responsável por ler o buffer da SSLStream<br>
        /// </summary><br>        /// <returns>Retornar um inteiro representando o tamanho do buffer lido</returns><br>        private int LerBuffer()<br>        {<br>            byte[] in_buf = new byte[4];<br>
<br>            int len = 0;<br>            int bytesRead = 0;<br>            while (bytesRead < 4)<br>            {<br>                try<br>                {<br>                    len = GerenciadorConexao.StreamSSL.Read(in_buf, bytesRead, 4 - bytesRead);<br>
                }<br>                catch (System.Exception ex)<br>                {//IOException<br>                    //throw ex;<br>                    GerenciadorConexao.StreamSSL = null;<br>                    return -1;<br>
                }<br>                if (len < 0)<br>                {<br>                    return -1;<br>                }<br>                bytesRead += len;<br>            }<br><br>            return (((in_buf[0] & 0xff) << 24) | ((in_buf[1] & 0xff) << 16) |<br>
                    ((in_buf[2] & 0xff) << 8) | (in_buf[3] & 0xff));<br>        }<br><br>        /// <summary><br>        /// Método responsável por ler a mensagem passada em buffer<br>        /// </summary><br>
        /// <param name="inbuf_sz">O tamanho do buffer a ser lido</param><br>        /// <returns>Retorna um array de bytes representando a mensagem lida</returns><br>        private byte[] LerMensagem(int inbuf_sz)<br>
        {<br>            byte[] in_buf = new byte[inbuf_sz];<br><br>            int len = 0;<br>            int bytesRead = 0;<br>            while (bytesRead < inbuf_sz)<br>            {<br>                try<br>                {<br>
                    len = GerenciadorConexao.StreamSSL.Read(in_buf, bytesRead, inbuf_sz - bytesRead);<br>                }<br>                catch (System.Exception xcp)<br>                {//IOException<br>                    GerenciadorConexao.StreamSSL = null;<br>
                    return null;<br>                    //throw xcp;<br>                }<br>                if (len < 0)<br>                {<br>                    return null;<br>                }<br>                bytesRead += len;<br>
            }<br>            return in_buf;<br>        }<br><br><div class="gmail_quote">2008/11/24  <span dir="ltr"><<a href="mailto:giuseppe@corp.plugin.com.br">giuseppe@corp.plugin.com.br</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Tem algum exemplo que utilize o beta do registro que possa disponibilizar?<br>
<br>
Desde ja obrigado.<br>
<br>
[ ]'s<br>
Giuseppe Lopes<br>
<div><div></div><div class="Wj3C7c"><br>
> Opa, valeu mas já terminei faz mais de 3 meses, rsrsrsrsrs<br>
><br>
> Na verdade, já estou bolando uma nova versão do sistema, estou pensando em<br>
> utilizar Linq To Xml e parar de manipular os Xmls de envio e resposta como<br>
> se fossem strings.<br>
><br>
> Mas obrigado por perguntar.<br>
><br>
> Atenciosamente,<br>
><br>
> Luiz Fernando<br>
><br>
> 2008/11/23 Anderson L K <<a href="mailto:alk@sisgel.com">alk@sisgel.com</a>><br>
><br>
>>  Como está a implementação em C#?<br>
>><br>
>> Precisa de ajuda?<br>
>><br>
>><br>
>> Anderson L K<br>
>><br>
>> _______________________________________________<br>
>> eppnicbr mailing list<br>
>> <a href="mailto:eppnicbr@eng.registro.br">eppnicbr@eng.registro.br</a><br>
>> <a href="https://eng.registro.br/mailman/listinfo/eppnicbr" target="_blank">https://eng.registro.br/mailman/listinfo/eppnicbr</a><br>
>><br>
>><br>
> _______________________________________________<br>
> eppnicbr mailing list<br>
> <a href="mailto:eppnicbr@eng.registro.br">eppnicbr@eng.registro.br</a><br>
> <a href="https://eng.registro.br/mailman/listinfo/eppnicbr" target="_blank">https://eng.registro.br/mailman/listinfo/eppnicbr</a><br>
><br>
<br>
<br>
_______________________________________________<br>
eppnicbr mailing list<br>
<a href="mailto:eppnicbr@eng.registro.br">eppnicbr@eng.registro.br</a><br>
<a href="https://eng.registro.br/mailman/listinfo/eppnicbr" target="_blank">https://eng.registro.br/mailman/listinfo/eppnicbr</a><br>
</div></div></blockquote></div><br>