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

Flutter使用Dio请求NewsAPI出现SocketException主机查找失败问题求助

问题根因

从报错日志可直接定位:域名解析失败的目标为newsapi.orgv2,说明请求URL拼接错误,BaseUrl与接口路径拼接时缺少分隔斜杠,导致域名被错误识别为newsapi.orgv2而非正确的newsapi.org。

解决方案

方案1(推荐:统一拼接规则避免后续出错)

修改Dio初始化配置,在baseUrl末尾添加斜杠:

class DioHelper {
  static late Dio dio;

  static init() {
    dio = Dio(
      BaseOptions(
        baseUrl: 'https://newsapi.org/', // 末尾新增斜杠
        receiveDataWhenStatusError: true,
      ),
    );
  }
}

后续调用接口时传入的路径无需加开头的斜杠即可正常拼接,例如url: 'v2/everything'。

方案2(最小改动修复当前问题)

保持现有baseUrl不变,排查搜索接口调用处的url参数,确保参数值以斜杠/开头。你当前贴出的代码中搜索接口的url已经配置为/v2/everything,请确认实际运行的代码是否存在漏写开头斜杠的情况。

额外优化建议

可以在Dio中添加请求拦截器打印完整请求地址,方便后续快速定位接口拼接类问题:

static init() {
  dio = Dio(
    BaseOptions(
      baseUrl: 'https://newsapi.org',
      receiveDataWhenStatusError: true,
    ),
  );
  // 新增请求日志拦截
  dio.interceptors.add(InterceptorsWrapper(
    onRequest: (options, handler) {
      print("完整请求地址:${options.uri}");
      return handler.next(options);
    },
  ));
}

同时建议在调用搜索接口前增加关键词非空判断,避免传入空值触发接口返回业务错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:05