10
respostas

Só recebo o request e não o response e erro na aplicação

Olá, após executar a aplicação e rodar o findAll(), somente o request aparece, e não o response.

import 'dart:convert';

import 'package:bytebank_3/models/contact.dart';
import 'package:bytebank_3/models/transaction.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_interceptor.dart';

class LoggingInterceptor implements InterceptorContract {
  @override
  Future<RequestData> interceptRequest({required RequestData data}) async {
    debugPrint('Request');
    debugPrint('url: ${data.url}');
    debugPrint('headers: ${data.headers}');
    debugPrint('body: ${data.body}');
    return data;
  }

  @override
  Future<ResponseData> interceptResponse({required ResponseData data}) async {
    debugPrint('Response');
    debugPrint('status code: ${data.statusCode}');
    debugPrint('headers: ${data.headers}');
    debugPrint('body: ${data.body}');
    return data;
  }
}

Future<List<Transaction>> findAll() async {
  final Client client = InterceptedClient.build(
    interceptors: [LoggingInterceptor()],
  );

  final Response response =
      await client.get(Uri.http('192.168.0.89:8080','transactions'));
  final List<dynamic> decodedJson = jsonDecode(response.body);
  final List<Transaction> transactions = [];
  for (Map<String, dynamic> transactionJson in decodedJson) {
    final Map<String, dynamic> contactJson = transactionJson['contact'];
    final Transaction transaction = Transaction(
      transactionJson['value'],
      Contact(
        0,
        contactJson['name'],
        contactJson['accountNumber'],
      )
    );
    transactions.add(transaction);
  }
  return transactions;
}

No chrome, depois de rodar o arquivo "server.jar", aparece o esperado, ou seja, as transações. Porém, depois de algum tempo, aparece esse erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeE no console: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Já realizei todos os passos das outras perguntas. Reiniciei o terminal e a máquina, verifiquei firewall e conexões à internet, inclusive refiz o código. Também já rodei o "flutter clean" e depois "flutter pub get" novamente.

Versão do Flutter: 2.5.2 stable. Versão do Dart: 2.14.3

Observação: Funcionava perfeitamente antes, depois parou de funcionar.

10 respostas

Olá

O endereço IP está correto? Tente usar o parse ao invez do construtor :

const String baseUrl = 'http://192.168.0.89:8080/transactions';

var url = Uri.parse(baseUrl);

Infelizmente não deu certo também, Jose.

O server está rodando? O erro é de Timeout.

Está rodando sim, Jose. Sem erro no terminal. Não entendo o motivo, já que antes funcionava e depois, quando fui mexer novamente na aplicação, aconteceu esse erro.

Coloque o http://192.168.0.89:8080/transactions em seu navegador para ver o que responde.

Você não alterou nada no emulador que esteja bloqueando o acesso à rede?

Não alterei nada, Jose. Olha o print do navegador:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Passe o código a alteração que sugeri e o erro que aparece, por favor

Nada ainda, Jose. Acontece o mesmo erro inicial do post.

Muito estranho. Tente criar outro emulador ou executar o código no chrome. Tente colar o endereço do servidor no chrome do emulador (está usando emulador, correto?)

Oi! Tive o mesmo problema, é que o flutter não aceita conexão http, somente https. Descobri isso lendo algumas coisas aqui e na internet. Cheguei a colocar a dúvida aqui no forum e depois achei a solução. Eu descrevi na solução da dúvida que abri nesse link mesmo https://cursos.alura.com.br/forum/topico-erro-http-184567

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software