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>