SocketException: Connection refused

SocketException: OS Error: Connection refused, errno = 111

Quick Answer

The app could not connect to the server, usually due to network issues or wrong URL.

Why This Happens

In Flutter, a SocketException occurs when the HTTP client cannot establish a connection to the server. Common causes include no internet connection, wrong server URL, server being down, or using localhost on a physical device. On Android emulator, use 10.0.2.2 instead of localhost.

The Problem

// On Android emulator, localhost refers to the emulator itself
final response = await http.get(
  Uri.parse('http://localhost:8080/api/data'),
);

The Fix

// Use 10.0.2.2 for Android emulator to reach host machine
final response = await http.get(
  Uri.parse('http://10.0.2.2:8080/api/data'),
);

Step-by-Step Fix

  1. 1

    Identify the error

    Look at the SocketException message for details about the connection failure, including the address and port.

  2. 2

    Find the cause

    Verify the server URL is correct, the server is running, and the device has network access. On emulator, check if you need 10.0.2.2.

  3. 3

    Apply the fix

    Correct the URL, ensure network connectivity, and add proper error handling with try-catch around HTTP calls.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free