Llevo mucho tiempo intentandolo y no logro resolverlo, espero me puedan ayudar. Tengo mi base de datos SQL ejecutándose así como FastApi. FastAPI se ejecuta en: http://127.0.0.1:8000 <- como se ve aquí
Y funciona perfectamente cuando se prueba en OpenApi como se muestra aquí.
Tengo mi aplicación flutter haciendo la siguiente solicitud de obtención:
Future MakeGetProductRequest() async { Uri url = Uri.parse('http://localhost:8000/items?page=1&number=5'); var response = await http.get(url); return response; }
Cuando ejecuto la aplicación en un dispositivo físico a través de la depuración USB, aparece el siguiente error:
Unhandled Exception: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 34214
Error de consola completa aquí
NOTA: ¡Estoy ejecutando esto en un dispositivo físico, no en un emulador!
No funcionará en la dirección de loopback. Su dirección 127.0.0.1 no es accesible en el dispositivo flutter.
Para conectarlos a ambos, deberá ejecutar FastAPI en 0.0.0.0 de esta manera:
if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)
El código anterior hará que su IP local esté disponible en la LAN. Solo asegúrese de que su teléfono y PC estén conectados a la misma red WIFI.
Para obtener la dirección IP de su PC, ejecute esto en el símbolo del sistema:
ipconfig
Y obtendrás una salida como esta:
Wireless LAN adapter Wi-Fi: Connection-specific DNS Suffix . : IPv4 Address. . . . . . . . . . . : 192.168.29.82 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.29.1
Puede ver que mi IPv4 Address
es 192.168.29.82
, por lo tanto, para acceder a FastAPI desde mi código flutter, tendré que conectarme a http://192.168.29.82:8000