Flutter 使用get API获取null响应

Flutter 使用get API获取null响应,flutter,Flutter,你好,我有这个包裹 在依赖项上的文件pubspec.yamlhttp:^0.12.0+2 . 我拿到包裹了 进口 import 'package:http/http.dart' as http; 代码 我调试它,response的值总是空的。所以我从来不知道回复的状态码。我也尝试使用其他API,但我也有同样的问题。我在网站上搜索URL,它会给我一个JSON,这就是我要找的 有什么建议吗? 我还尝试了一个例子,但失败了 导入'dart:convert'作为convert; 将“package:

你好,我有这个包裹

在依赖项上的文件
pubspec.yaml
http:^0.12.0+2 . 我拿到包裹了

进口

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

我调试它,response的值总是空的。所以我从来不知道回复的状态码。我也尝试使用其他API,但我也有同样的问题。我在网站上搜索URL,它会给我一个JSON,这就是我要找的

有什么建议吗?

我还尝试了一个例子,但失败了

导入'dart:convert'作为convert;
将“package:http/http.dart”导入为http;
主(列表参数)异步{
变量url=”https://www.googleapis.com/books/v1/volumes?q={http}”;
//等待http get响应,然后解码json格式的响应。
var response=wait http.get(url);
如果(response.statusCode==200){
var jsonResponse=convert.jsonDecode(response.body);
var itemCount=jsonResponse['totalItems'];
打印(“关于http的书籍数量:$itemCount.”);
}否则{
打印(“请求失败,状态:${response.statusCode}”);
}
}

此代码适用于我:

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

class StackOverflow extends StatefulWidget {
  @override
  _StackOverflowState createState() => _StackOverflowState();
}

class _StackOverflowState extends State<StackOverflow> {
  @override
  void initState() {
    super.initState();
    _getHttp().then((response){
      print('response code = '+ response.statusCode.toString());
    });

  }

  Future<http.Response> _getHttp() async {
    String latitude = 'latitude';
    String longitude = 'longitude';
    String aPI_KEY = 'API_KEY';

    try {
      http.Response response = await http.get(
        'https://api.openweathermap.org/data/2.5/weather?lat=$latitude&lon=$longitude&appid=$aPI_KEY');
        return response;
    } catch (e) {
      print('Exception = ' + e.toString());
      throw Exception(e);
    }


  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}
导入“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
类StackOverflow扩展了StatefulWidget{
@凌驾
_StackOverflowState createState()=>\u StackOverflowState();
}
类_StackOverflowState扩展状态{
@凌驾
void initState(){
super.initState();
_getHttp()。然后((响应){
打印('response code='+response.statusCode.toString());
});
}
Future\u getHttp()异步{
字符串纬度='纬度';
字符串经度='经度';
字符串aPI_KEY='aPI_KEY';
试一试{
http.Response-Response=等待http.get(
'https://api.openweathermap.org/data/2.5/weather?lat=$latitude&lon=$longitude&appid=$aPI_KEY');
返回响应;
}捕获(e){
打印('Exception='+e.toString());
抛出异常(e);
}
}
@凌驾
小部件构建(构建上下文){
返回脚手架();
}
}

我出现问题的原因是Android清单,我是新的,不知道为什么它不能有空白的换行符,所以我加入了它,它就工作了。我哭了XD把它放进试一试然后打印exception@ArashMohammadi但这不是问题,问题是总是返回null我没有收到null,它有response.body,响应代码是401,因为api键,但我这边不是null,你需要试着抓住它,知道什么是最重要的problem@ArashMohammadi我能看看你的密码吗?你管理过$signs吗?我将把我的代码放在答案中,希望这会有所帮助:)。只要把它们放在try-catch中并打印异常,我将用try-catch编辑答案不起作用:(这不是代码或我不知道:(所以
print('exception='+e.toString())
没有被调用?那么我们需要整个代码来调试它。在debug中再前进一行。然后查看响应中的内容或它跳转到catch。因此,当响应为null时,我不知道为什么,但它像函数的退出一样
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

class StackOverflow extends StatefulWidget {
  @override
  _StackOverflowState createState() => _StackOverflowState();
}

class _StackOverflowState extends State<StackOverflow> {
  @override
  void initState() {
    super.initState();
    _getHttp().then((response){
      print('response code = '+ response.statusCode.toString());
    });

  }

  Future<http.Response> _getHttp() async {
    String latitude = 'latitude';
    String longitude = 'longitude';
    String aPI_KEY = 'API_KEY';

    try {
      http.Response response = await http.get(
        'https://api.openweathermap.org/data/2.5/weather?lat=$latitude&lon=$longitude&appid=$aPI_KEY');
        return response;
    } catch (e) {
      print('Exception = ' + e.toString());
      throw Exception(e);
    }


  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}