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

Flutter中Failed host lookup错误及注册接口问题求助

解决Flutter中"Failed host lookup"错误及注册接口问题

首先看你代码里的明显错误:你已经定义了正确的注册接口地址var url = '$baseUrl/register';,但实际发起请求时却用了根路径https://shamo-backend.buildwithangga.id/api,漏掉了/register后缀,这会导致请求地址错误,先把这个改过来。

接下来解决主机查找失败的问题,常见原因和解决方法:

  • 添加网络权限
    在Android项目的android/app/src/main/AndroidManifest.xml中,确保添加了互联网权限:

    <uses-permission android:name="android.permission.INTERNET" />
    

    iOS项目则需要在Info.plist中确认ATS配置(如果你的域名是https,默认是允许的,但若有特殊情况,可添加以下配置):

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    
  • 确认域名可用性
    在设备浏览器中直接访问https://shamo-backend.buildwithangga.id,看是否能正常打开。如果打不开,说明域名本身有问题;如果能打开,检查设备的网络连接,切换到手机流量或者其他WiFi试试。

  • 关闭代理
    如果你设备开启了代理(比如Charles、Fiddler),可能会导致域名解析失败,先关闭代理再测试。

修正后的完整代码:

import 'package:altamazee/models/user_model.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

class AuthService {
  String baseUrl = 'https://shamo-backend.buildwithangga.id/api';

  Future<UserModel> register({
    required String name,
    required String username,
    required String email,
    required String password,
  }) async {
    var url = '$baseUrl/register';
    var headers = {'Content-Type': 'application/json'};
    var body = jsonEncode({
      'name': name,
      'username': username,
      'email': email,
      'password': password,
    });

    // 改为使用定义好的url变量,而不是硬编码根路径
    var response = await http.post(
      Uri.parse(url),
      headers: headers,
      body: body,
    );

    print(response.body);

    if (response.statusCode == 200) {
      var data = jsonDecode(response.body)['data'];
      UserModel user = UserModel.fromJson(data['user']);
      user.token = 'Bearer ' + data['access_token'];

      return user;
    } else {
      // 建议解析错误信息,而不是固定抛出同一个异常
      var errorData = jsonDecode(response.body);
      throw Exception(errorData['message'] ?? '注册失败');
    }
  }
}

另外补充一个小建议:不要固定抛出"Email sudah terdaftar"的异常,因为接口返回的错误可能有多种情况,最好解析返回的错误信息再抛出,这样更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:15:50