PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Requisição POST XML #529223

19/08/2015

0

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:

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:

'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!
Thais Ribeiro

Thais Ribeiro

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar