You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用Laravel API遇ClientSocketException: Connection Timed Out问题求助

Flutter连接Laravel API出现ClientSocketException: Connection Timed Out问题

我正在开发一款以Laravel API为后端的Flutter应用,目前遇到ClientSocketException: Connection Timed Out错误。用手机Chrome访问PC上的Laravel应用时,起初出现ERR_CONNECTION_TIMED_OUT,关闭Windows Defender防火墙后变为ERR_CONNECTION_REFUSED。

已尝试的解决方法

  • 在AndroidManifest中添加网络权限<uses-permission android:name="android.permission.INTERNET"/>
  • 使用PC的IP地址,并确保物理手机与PC处于同一WiFi网络

相关代码

api.dart

class Network {
  final String _url = 'http://192.168.0.143:8000/api';
  var token;

  _getToken() async {
    SharedPreferences localStorage = await SharedPreferences.getInstance();
    token = jsonDecode(localStorage.getString('token') ?? '')['token'];
  }

  auth(filePath, data, apiURL) async {

    var fullUrl = _url + apiURL;
    return await http.post(
      Uri.parse(fullUrl),
      body: jsonEncode(data),
      headers: _setHeaders()
    );
  }

  getData(apiURL) async {
    var fullUrl = _url + apiURL;
    await _getToken();
    return await http.get(
      Uri.parse(fullUrl),
      headers: _setHeaders(),
    );
  }

  _setHeaders() => {
        // 'Content-type': 'application/json',
        // 'Accept': 'application/json',
        'Authorization': 'Bearer $token',
      };
}

login.dart

void _login() async {
    var data = {'username': username, 'phoneNumber': phoneNumber};
    var res;
    try {
      res= await Network().auth(profileImage?.path ?? '', data, '/loginOrRegister');
      // var body = json.decode(res);
      var body = await res.stream.toBytes();
      // body = String.fromCharCodes(body);
      // print('body $body');
      // if (body['success']) {
      //   SharedPreferences localStorage = await SharedPreferences.getInstance();
      //   localStorage.setString('token', json.encode(body['token']));
      //   localStorage.setString('user', json.encode(body['user']));
      //   Navigator.pushReplacement(
      //     context,
      //     new MaterialPageRoute(builder: (context) => HomePage()),
      //   );
      // } else {
      //   _showMsg(body['message']);
      // }
    } on SocketException { 
        print("Socket exception: ${e.toString()}");
    }catch (e) {
      print('Failed to create user: $e');
    }
  }

内容的提问来源于stack exchange,提问作者Rumike7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:12:54