Array
(
)

Requisição POST XML

Thais Ribeiro
   - 19 ago 2015

Boa tarde pessoal,
Posso pedir socorro? Estou desesperada, já rodei a internet em busca de uma solução e não encontrei :/ vou explicar o que está acontecendo: Estou tentando fazer uma requisição via POST usando httpwebrequest assim:
#Código

public DataSet BuscaRetornoXMLSite(ParametrosSite site,
                                           ParametrosEntrada entrada)
        {
            WebRequest requisicao = null;
            WebResponse resposta = null;
            StreamReader leitorConteudo = null;
             Stream dataStream = null;
            DataSet ds;
            StringBuilder parametros;
            string status;
            byte[] byteArray;


            try
            {
                parametros = new StringBuilder();
                if (entrada.codigo_transacao > -1) { parametros.Append(String.Format(Constantes._CODIGO_TRANSACAO, entrada.codigo_transacao)); }
                if (entrada.loja_primaria != null) { parametros.Append(String.Format(Constantes._LOJA_PRIMARIA, entrada.loja_primaria)); }
                if (entrada.nome_primario != null) { parametros.Append(String.Format(Constantes._NOME_PRIMARIO, entrada.nome_primario)); }
                if (entrada.senha_primaria != null) { parametros.Append(String.Format(Constantes._SENHA_PRIMARIA, entrada.senha_primaria)); }
                if (entrada.compra > -1) { parametros.Append(String.Format(Constantes._COMPRA, entrada.compra)); }
                if (entrada.produto != null) { parametros.Append(String.Format(Constantes._PRODUTO, entrada.produto)); }
                if (entrada.valor > -1) { parametros.Append(String.Format(Constantes._VALOR, entrada.valor.ToString(new CultureInfo(Constantes.CULTURA_XML)))); }
                if (entrada.ddd != null) { parametros.Append(String.Format(Constantes._DDD, entrada.ddd)); }
                if (entrada.fone != null) { parametros.Append(String.Format(Constantes._FONE, entrada.fone)); }
                if (entrada.id_terminal > -1) { parametros.Append(String.Format(Constantes._ID_TERMINAL, entrada.id_terminal)); }
                if (entrada.uf_terminal != null) { parametros.Append(String.Format(Constantes._UF_TERMINAL, entrada.uf_terminal)); }
                if (entrada.dataHoraOperacao > -1) { parametros.Append(String.Format(Constantes._DATAHORAOPERACAO, entrada.dataHoraOperacao)); }
                if (entrada.versao > -1) { parametros.Append(String.Format(Constantes._VERSAO, entrada.versao.ToString(new CultureInfo(Constantes.CULTURA_XML)))); }
                if (entrada.cod_retorno > -1) { parametros.Append(String.Format(Constantes._COD_RETORNO, entrada.cod_retorno)); }
                if (entrada.dataConsulta != null) { parametros.Append(String.Format(Constantes._DATACONSULTA, entrada.dataConsulta)); }
                if (entrada.cod_online > -1) { parametros.Append(String.Format(Constantes._COD_ONLINE, entrada.cod_online)); }
                parametros.Remove(parametros.ToString().IndexOf("&"), 1);

                //Cria uma requisição usando uma URL que pode receber um post.
                requisicao = (WebRequest)WebRequest.Create(site.endereco);
                //Seta Credenciais
                requisicao.Proxy = site.proxy;
                requisicao.Credentials = site.credenciais;
                //Seta a propriedade Método do pedido de POST.
                requisicao.Method = site.metodo;
                byteArray = Encoding.UTF8.GetBytes(parametros.ToString());
                //Seta a propriedade ContentType do WebRequest.
                requisicao.ContentType = "application/xml;charset=ISO-8859-1";
                //Seta a propriedade ContentLength do WebRequest.
                requisicao.ContentLength = byteArray.Length;
                //Obtem o fluxo da solicitação.

                dataStream = requisicao.GetRequestStream();

                //Escreve os dados para o fluxo de solicitação.
                dataStream.Write(byteArray, 0, byteArray.Length);
                //Fecha o objeto Stream.
                dataStream.Close();
                //Obtem a resposta.
                resposta = requisicao.GetResponse();
                //Exibir o status.
                status = ((HttpWebResponse)resposta).StatusDescription;
                //Obtem o conteúdo retornado pelo servidor.
                dataStream = resposta.GetResponseStream();
                //Abre um stream utilizando um StreamReader para fácil acesso.
                leitorConteudo = new StreamReader(dataStream, Encoding.GetEncoding(Constantes.ENCODING_XML));
                //Popula DataSet
                ds = new DataSet("DataSetConteudoXML");
                //GeraLogErro.Erro("XML SITE", leitorConteudo.ReadToEnd());
                ds.ReadXml(leitorConteudo);
                return ds;
            }
            catch (Exception ex)
            { throw ex; }
            finally
            {
                if (leitorConteudo != null)
                    leitorConteudo.Close();
                if (dataStream != null)
                    dataStream.Close();
                if (resposta != null)
                    resposta.Close();
                leitorConteudo = null;
                dataStream = null;
                resposta = null;
            }

        }


Mas na hora que dou um resposta GetRequestStream() ele gera o seguinte erro:
#Código
'dataStream.Length' threw an exception of type 'System.NotSupportedException'
'dataStream.Position' threw an exception of type 'System.NotSupportedException'

Se alguém conseguiu resolver, me ajudem por favor!
Obrigada!