1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro requisição POST

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!

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags post ou faça a sua própria pergunta.