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

参数类型'String'无法分配给参数类型'Uri',Dart http请求报错如何解决?

报错根因

0.13.0及以上版本的http包,不再支持直接向请求方法传入String类型的URL参数,要求必须传入Uri类型对象,因此触发类型不匹配报错。

修复方法

仅需要修改你代码中发起请求的行,将传入的字符串URL通过Uri.parse()方法转为Uri类型即可,修改后的完整代码如下:

import 'dart:convert';
import 'package:http/http.dart' as http;

class RequestAssistant
{
  static Future<dynamic> getRequest(String url) async
  {
    // 仅修改此行,将字符串转为Uri
    http.Response response = await http.get(Uri.parse(url));

    if(response.statusCode == 200)
    {
      String jSonData = response.body;
      var decodeData = jsonDecode(jSonData);
      return decodeData;
    }
    else
    {
      return "Failed, No Response.";
    }
  }
}
补充说明
  • 传入Uri.parse()的字符串必须是标准URI格式,需要带http://或https://前缀,否则会抛出格式解析异常
  • 如需构造带查询参数的请求,更推荐使用Uri.http()/Uri.https()方法直接构造,避免手动拼接字符串出现转义错误,示例:
    // 示例:构造https://example.com/api/getUser?id=123&age=20
    var uri = Uri.https('example.com', '/api/getUser', {'id': '123', 'age': '20'});
    
  • 如果你不想适配新版本接口,也可以在pubspec.yaml中将http包版本降级到^0.12.2,即可继续使用字符串类型的URL参数,不过更推荐适配新版本以获得安全和功能更新。

内容的提问来源于stack exchange,提问作者Hassan El dika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:45:04