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
相关产品推荐
相关产品推荐

