在flutter中发出http.get()请求时出现问题

voj3qocg  于 6个月前  发布在  Flutter
关注(0)|答案(5)|浏览(88)

我正在学习API的和http请求在Flutter和我面临的问题,使一个获取请求,因为在任何教程中,他们直接粘贴字符串URL内获取作为参数,但当我张贴它作为字符串它显示错误:
无法将参数类型“String”分配给参数类型“Uri”。
有人能帮我吗?这是我的示例代码:

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

void main(List<String> arguments) async {
  // This example uses the Google Books API to search for books about http.
  // https://developers.google.com/books/docs/overview
  var url = 'https://www.googleapis.com/books/v1/volumes?q={http}';

  // Await the http get response, then decode the json-formatted response.
  var response = await http.get(url); // i am getting error here
  if (response.statusCode == 200) {
    var jsonResponse = convert.jsonDecode(response.body);
    var itemCount = jsonResponse['totalItems'];
    print('Number of books about http: $itemCount.');
  } else {
    print('Request failed with status: ${response.statusCode}.');
  }
}

字符串
下面是我的代码错误的图片:


的数据

r55awzrz

r55awzrz1#

首先将http导入为http

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

字符串
然后使用

var url = Uri.parse('https://www.googleapis.com/books/v1/volumes?q={http}');
http.Response response = await http.get(url);
try {
  if (response.statusCode == 200) {
    String data = response.body;
    var decodedData = jsonDecode(data);
    return decodedData;
  } else {
    return 'failed';
  }
} catch (e) {
  return 'failed';
}

2jcobegt

2jcobegt2#

如果还是不行,试试这个:

import 'package:http/http.dart';

var response = get(Uri.parse('https://www.google.com'));

字符串

zf2sa74q

zf2sa74q3#

试试这个(将http添加到dependencies下的pubspec.yaml):

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

var response = http.get(Uri.parse('https://www.google.com'));

字符串

ogsagwnx

ogsagwnx4#

你传递字符串错误说需要一个uri,所以创建一个uri并在其中使用。

var uri = new Uri.http("example.org", "/path", { "q" : "{http}" });

字符串

tpgth1q7

tpgth1q75#

首先,检查你的pubspec.yaml文件和HTTP版本。它应该是你可以在这里找到的实际版本:https://pub.dev/packages/http/install例如,它是:

http: ^0.12.2

字符串
目前
下面是我的代码,它工作得很好:
main.dart

import 'package:flutter/material.dart';
import 'package:stackowerflow/my_app.dart';

void main() {
  runApp(MyApp());
}


我的app.dart

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

class MyApp extends StatelessWidget {
  Future<void> stackHelp() async {
    var url = 'https://www.googleapis.com/books/v1/volumes?q={http}';

    // Await the http get response, then decode the json-formatted response.
    var response = await http.get(url);
    if (response.statusCode == 200) {
      var jsonResponse = convert.jsonDecode(response.body);
      var itemCount = jsonResponse['totalItems'];
      print('Number of books about http: $itemCount.');
    } else {
      print('Request failed with status: ${response.statusCode}.');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter WebView '),
        ),
        body: Container(
          child: TextButton(onPressed: stackHelp, child: Text('Push me')),
        ),
      ),
    );
  }
}


结果

flutter: Number of books about http: 485.

相关问题