无法将参数类型“String”分配给参数类型“Uri”

Adv*_*une 48 dart flutter

我正在尝试使用颤振插件 HTTP 发出 HTTP POST 请求,但出现标题错误。有谁知道这是什么原因,因为在我的其他应用程序中这工作得很好?

await http.post(Uri.encodeFull("https://api.instagram.com/oauth/access_token"), body: {
      "client_id": clientID,
      "redirect_uri": redirectUri,
      "client_secret": appSecret,
      "code": authorizationCode,
      "grant_type": "authorization_code"
    });
Run Code Online (Sandbox Code Playgroud)

jam*_*lin 131

为了提高编译时类型安全性,package:http0.13.0 引入了重大更改,使以前接受Uris 或Strings 的所有函数现在 接受Uris。您将需要显式使用从sUri.parse创建s。(以前在内部为您调用。)UriStringpackage:http

旧代码 用。。。来代替
http.get(someString) http.get(Uri.parse(someString))
http.post(someString) http.post(Uri.parse(someString))

(等等。)

在您的具体示例中,您将需要使用:

await http.post(
  Uri.parse("https://api.instagram.com/oauth/access_token"),
  body: {
    "client_id": clientID,
    "redirect_uri": redirectUri,
    "client_secret": appSecret,
    "code": authorizationCode,
    "grant_type": "authorization_code",
  });
Run Code Online (Sandbox Code Playgroud)

  • @Tayan 阅读文档。`Uri.parse` 采用单个 URL 字符串。`Uri.https`/`Uri.http` 从各部分(主机名、路径和用于查询参数的 `Map`)*构建*一个 `Uri`。如果您已经将 URL 作为“String”,则只需使用“Uri.parse”;它比直接使用 `Uri.https`/`Uri.http` 更不容易出错。 (2认同)