为啥 http.get 不能再使用字符串了? [复制]
Posted
技术标签:
【中文标题】为啥 http.get 不能再使用字符串了? [复制]【英文标题】:Why cant http.get work with strings anymore? [duplicate]为什么 http.get 不能再使用字符串了? [复制] 【发布时间】:2021-10-27 05:58:19 【问题描述】:我试图通过以下方式从 API 端点获取信息:
Response response= await get('https://jsonplaceholder.typicode.com/todos/1');
但这不起作用,所以我不得不使用 Uri 解析它:
Response response= await get(Uri.parse('https://jsonplaceholder.typicode.com/todos/1'));
为什么我们需要使用Uri来解析HTTP地址?
【问题讨论】:
以前http.get
(和其他各种函数)接受String
或Uri
参数。这需要将该参数作为 dynamic
类型,但这也意味着 any 参数可以在没有编译错误的情况下传递,因此诸如 http.get(123)
、http.get(true)
、http.get(null)
之类的东西会导致崩溃直到运行时才会被捕获。
【参考方案1】:
Uri.parse
方法验证提供的 URL。
如果提供的 URL 无效,您会在控制台中看到异常
Flutter 团队说:
如果提供了 start 和 end,它们必须指定一个有效的子字符串 uri,并且只有从开始到结束的子字符串被解析为 URI。如果 uri 字符串作为 URI 或 URI 引用无效,a 抛出 FormatException。 你可以了解更多from here
当然,Uri.parse
方法比在验证 URL 之前向服务器发送请求更强大
【讨论】:
以上是关于为啥 http.get 不能再使用字符串了? [复制]的主要内容,如果未能解决你的问题,请参考以下文章