Flutter:HTTP GET请求体为空

3

我正在尝试使用Flutter进行一些操作,并尝试执行http get请求。但是每次响应中都返回空的正文。

例如,使用以下代码:

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

[...]

http.Client client = new http.Client();
client
    .get("https://www.googleapis.com/books/v1/volumes?q=$text")
    .then((http.Response response) {
  print(response.statusCode);
  print(response.body);
  setState(() {
    _isLoading = false;
  });
});

我得到了以下结果:
200
{

您有任何想法吗?

提前感谢!

编辑

该问题似乎只在iOS设备上发生。 在Android上按预期工作。


1
你尝试过设置断点并检查代码主体吗?我记得在Windows上有一些多行打印的问题。 - Rene
虽然与您的问题无直接关系,但如果您需要在 Flutter 中使用 Google API 进行身份验证,则 https://dev59.com/XVYM5IYBdhLWcg3wsx3z#48485898 可能会对您有所帮助。 - Günter Zöchbauer
请注意,您不需要包含任何标头。尝试添加Accept: application.json - Tobe Osakwe
也许 Dio 可以简化事情:https://pub.dartlang.org/packages/dio#-example-tab- - SteAp
3个回答

1

你可以尝试下面的代码。该代码未经测试。

import 'dart:io';
import 'dart:convert';

main() async {
  try {
    var client = new HttpClient();
    String text = "example";

    var uri = Uri.parse("https://www.googleapis.com/books/v1/volumes?q=$text");

    var request = await client.getUrl(uri);
    var response = await request.close();
    var responseBody = await response.transform(UTF8.decoder).join();
    print(responseBody);
  } catch (exception) {
    print(exception);
  }
}

1
我得到了相同的结果:"{" - Jonathan

1
可能您忘记了头文件,例如:<\p>
headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'X-Requested-With': 'XMLHttpRequest',
    },

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接