如何从抖动中的流式响应中获取响应?

时间:2020-03-26 20:13:27

标签: api http flutter dart

我正在使用Flutter开发一个应用程序,并且正在使用http库调用我构建的api。

我想发送文件的多部分请求,它也发送文件,但是我不能从服务器收到任何响应,因为返回的对象是StreamResponse。

请告诉我如何获得回复的正文。

代码段:

var request = http.MultipartRequest('POST', Uri.parse('$SERVER_URL/signup'));
    request.files.add(await http.MultipartFile.fromPath(
      'image',
      user.image,
      filename: 'image',
      contentType: MediaType('multipart/form-data', 'multipart/form-data'),
    ));



    StreamResponse x = await request.send();
    //get body of the response


谢谢

2 个答案:

答案 0 :(得分:1)

只需使用 http.Response.fromStream()

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

var streamedResponse = await request.send()
var response = await http.Response.fromStream(streamedResponse);

答案 1 :(得分:0)

StreamedResponse有一个stream吸气剂,正如您所期望的那样,它可以提供字节数组流。

假设您要使用字符而不是字节,则将其推入适当的字符解码器-假设使用UTF-8。

然后您可能希望将所有这些都连接到一个字符串中,因此我们可以使用join。给你:

  print(await x.stream.transform(utf8.decoder).join());