none
Travamento em requisições JSON usando HttpRequest. RRS feed

  • Pergunta

  • Boa tarde Senhores,

    Estou fazendo requisições usando JSON e HttpWebRequest, passando um objeto como parâmetro e recebo uma listagem de objetos como resposta, porém são várias requisições feitas em sequência, e sempre na terceira requisição, independente da ordem de chamada, trava o dispositivo, e me retorna uma exceção sem tratativa.

    Estou usando a seguinte estrutura:

    //Serializa o objeto e chama o método que faz a requisição.

            private void Usuarios()
            {
                try
                {
                    Atualizacao atualizacao = new Atualizacao();
                    atualizacao.usuario = 0;
                    atualizacao.projeto = 0;
                    atualizacao.Data = "18/12/2014";
                    atualizacao.Tabela = "USUARIO";

                    var jsonEnvio = JsonConvert.SerializeObject(atualizacao);
                    byte[] bytes = Encoding.UTF8.GetBytes(jsonEnvio);

                    string uri = "www.xxx.com.br";

                    string  resultado = EnviaArquivoComResposta(uri, bytes);
                }

       catch (Exception ex)
                {
                    MessageBox.Show("Não foi possível atuaizar usuários!\nErro: " + ex.Message, "Usuários");
                }

    //Método que faz a chamada e retorna a string JSON.

            private string EnviaArquivoComResposta(string uri, byte[] b)
            {
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
                webRequest.ContentType = "application/json";
                webRequest.Method = "POST";
                webRequest.ContentLength = b.Length;

                using (Stream os = webRequest.GetRequestStream())
                {
                    os.Write(b, 0, b.Length);
                }

                HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
                Stream dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                return responseFromServer;
            }

    Seguindo o mesmo padrão do método "Usuarios()", tenho outros métodos que fazem uso da mesma chamada "EnviaArquivoComResposta()", e independente da ordem de chamada deles, sempre ocorre o travamento na terceira chamada.

    Alguém sabe o que pode ser ou já enfrentou o mesmo problema?

    Desde já agradeço a atenção.

    Abraço,

    Gabriel.

     
    • Editado GabrieLander quinta-feira, 18 de dezembro de 2014 19:35
    quinta-feira, 18 de dezembro de 2014 19:33

Todas as Respostas

  • Quando você diz que trava na terceira chamada, quer dizer que isso é chamado várias vezes? O método "Usuarios" é chamado muitoas vezes, mas na 3º ele trava?

    Qual a exceção?

    segunda-feira, 22 de dezembro de 2014 15:48
  • Boa tarde Raphael,

    Antes de tudo, obrigado pela atenção.

    Isso mesmo, não necessariamente o método "Usuários" é chamado várias vezes, tenho outros métodos que tem a mesma estrutura e usa o "EnviaArquivoComResposta()", e sempre na terceira chamada ele travava.

    Consegui resolver o problema finalizando as Streams usadas dentro do método, porém agora tenho outro problema:

    Estou recebendo um JSON com 500 registros, e acontece uma erro nessa linha:

    string responseFromServer = reader.ReadToEnd();

    Tentei tratar para verificar qual a exceção, mais sem sucesso, nem mesmo usando try / catch, ele simplesmente trava e aparece essa tela de erro:

    Agradeço desde já a atenção.

    Abraço,

    Gabriel.

    segunda-feira, 29 de dezembro de 2014 17:43
  • Mas esse seu "reader" não é um dos streams que você finalizou?

    terça-feira, 6 de janeiro de 2015 13:47