【问题标题】:Flutter: HTTP get request body is emptyFlutter:HTTP获取请求正文为空
【发布时间】:2018-08-22 09:26:03
【问题描述】:

我正在使用 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 上按预期工作。

【问题讨论】:

  • 你试过断点检查body吗?我想我记得 Windows 上的多行打印存在一些问题。
  • 与您的问题没有直接关系,但如果您需要在 Flutter 上使用 Google API 进行身份验证,stackoverflow.com/questions/48477625/… 可能会让您感兴趣。
  • 请注意,您不包括任何标题。尝试添加Acceptapplication.json
  • 也许 Dio 会简化一些事情:pub.dartlang.org/packages/dio#-example-tab-

标签: http request dart flutter


【解决方案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);
  }
}

【讨论】:

  • 我得到相同的结果:“{”
【解决方案2】:

可能你忘记了标题,例如:

headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'X-Requested-With': 'XMLHttpRequest',
    },

【讨论】:

    【解决方案3】:

    尝试 debugPrint() 而不是 print()。它会将所有正文打印到控制台

    https://flutter.io/debugging/#print-and-debugprint-with-flutter-logs

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2023-03-28
      • 1970-01-01
      • 2022-07-26
      相关资源
      最近更新 更多