使用流的Flutter API请求-太多元素

问题描述

有些棘手。 :slight_smile:我们选择不使用std::ostringstream buf; for(auto const &v : bd) buf << "&nbsp;" << v; library,而是直接使用http class,因为它使我们对客户端和标头等有了更多控制。 {1}}仍然包装该类。该类返回流。

使用

HttpClient

在我们的服务中调用的用于从后端api获取数据的函数名称有些不同):

http package

底层私有API请求功能

Flutter 1.20.3 • channel stable • https://github.com/Flutter/Flutter.git
Framework • revision 216dee60c0 (6 days ago) • 2020-09-01 12:24:47 -0700
Engine • revision d1bc06f032
Tools • Dart 2.9.2

在大多数情况下,使用这种方法效果很好,但是现在我们最近遇到了很多 static Future<String> APIRequest( {@required String relativeURL,@required String method,@required EnvironmentConfig config,dynamic data,HttpClient httpClient,Map<String,String> queryParameters}) async { final stream = await _APIRequest( method: method,relativeURL: relativeURL,httpClient: httpClient,data: data,queryParameters: queryParameters,config: config); return stream.singleWhere((obj) => obj != null,orElse: () => ''); } ,这是否与流或类似内容有关?

这是堆栈跟踪:

  static Future<Stream<String>> _APIRequest(
      {@required String method,@required String relativeURL,String> queryParameters,String token}) async {
    final client = httpClient == null ? HttpClient() : httpClient;
    final url =
        UriService.getUri(config,relativeURL,queryParameters);
    final request = await client.openUrl(method,url);
    // Add headers
    request.headers.add(
        "X-MOBILE-APP",'test'); // The value is ignore by the backend
    if (token != null) {
      request.headers.add(HttpHeaders.authorizationHeader,'Token $token');
    }
   if (data != null) {
      final encodedData = json.encode(data,toencodable: _toencodable);
      request.headers.contentType = ContentType.json;
      request.headers.contentLength = utf8.encode(encodedData).length;
      request.write(encodedData);
    }
    final response = await request.close();
    await _rejectIfBadStatusCode(response);
    return utf8.decoder.bind(response);
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)