如何从 Dart http 调用返回 json / 如何完全使用流?

2023-11-22

这是我的代码,应该返回 json。我从这里改编了这段代码https://github.com/flutter/flutter/issues/15110

  Stream _defaultReturn(HttpClientResponse httpClientResponse) {
    Stream response = httpClientResponse.
                      transform(utf8.decoder).
                      transform(json.decoder).
                      asyncMap((json) => jsonDecode(json));
    return response;
  }

  Future<dynamic> get(String endpoint) async {
    HttpClientRequest httpClientRequest =
        await httpClient.getUrl(Uri.parse(_url + endpoint));
    _addCookies(httpClientRequest);
    final HttpClientResponse httpClientResponse =
        await httpClientRequest.close();
    return _defaultReturn(httpClientResponse);
  }

我已经设置了返回类型Stream into _defaultReturn因为智能感知告诉我那个巨大的东西给了我一个Stream。我实际上想接收一个 json (应该是一个地图)。我想我可能会消费或订阅这个流来获得一些有用的东西。但是,我认为将 json 解析为流没有用处。解析之前我不需要整个json吗?我不应该简单地将所有内容积累成一个String然后只需调用jsonDecode?

从 http 调用返回 json 的最有效方法是什么?以及如何做呢?


json.decoder将监听源流和always将其内容转换为just one Object,所以你可以用流返回它.first:

Future<Object> get(String endpoint) async {
  var httpClientRequest = await httpClient.getUrl(Uri.parse(_url + endpoint));
  _addCookies(httpClientRequest);
  final httpClientResponse = await httpClientRequest.close();
  return httpClientResponse
           .transform(utf8.decoder)
           .transform(json.decoder)
           .first;
}

然后你可以像这样使用它:

var jsonObject = await myHttpClient.get(myEndpoint);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Dart http 调用返回 json / 如何完全使用流? 的相关文章

  • 如何显示多维数组第二层的 json 值?

    解决此代码时遇到问题 这些是数组 Array 0 gt stdClass Object id gt 1 name gt delux price gt 213 description gt tv gt 0 breakfast gt 0 par
  • Web API GET 请求中的电子邮件地址

    我正在开发在 ASP NET Web API 中实现的 REST API 我们想要支持的一个场景是执行GET通过电子邮件地址请求一些用户信息 理想情况下 客户应该能够执行以下操作 GET api v1 users email your em
  • 反序列化动态 JSON 文件 C# NewtonSoft.JSON

    正在反序列化一个动态 JSON 文件 该文件可能包含 2 个单独的类 我不知道数组中将包含哪种类型的数据 问题是 我将根对象反序列化为 Base 类型 subtests 对象被反序列化为 Subtest 但 subtests 数组可能是 B
  • 无法在 git 上获取 Http 工作

    我在拇指驱动器上使用 gitbash 作为 git 我的防火墙阻止了我 并且想设置我的 git 以进行 http 访问 我使用 github 并且已经看到了有关如何执行此操作的各种信息 但我还不够了解 无法让它为我自己工作 我在 php i
  • Rspec 控制器测试,传递 JSON 参数

    我试图实现以下目标 在 RSpec 控制器测试中创建 POST json 请求 并向其传递参数 这是我的代码 it returns access token do post login email bla password bla1 for
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具
  • 如何更改或替换 Flutter 中的 ImageCache?

    我想更改 Flutter 应用程序中 ImageCache 的行为 例如 我想尝试不同的驱逐策略 或者 我只是想要零缓存 用于实验 如何替换更改ImageCache 创建一个继承自 WidgetsFlutterBinding 的类 重写该类
  • 在 postgresql 9.4 或 9.5 中查询 json 对象的嵌套数组中的元素

    studentID 1 StudentName jhon Data schoolname school1 enrolmentInfo year 2015 info courseID csc213 school IT enrollmentda
  • Node.js - 异步 JSON 查询

    如果这是一个愚蠢的问题 我深表歉意 但我对 Javascript 很陌生 而 Node js 确实让我很头疼 因为它是异步的 我的目标是从 API 查询 JSON 对象并能够使用它 我试图寻找关于我应该做什么的问题和答案 但它们对我来说都没
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • Dart:使用 html 导入时隔离不起作用

    我在 Dart 中发现了这种非常奇怪和不幸的行为 当我在主文件中导入 dart html 时 我的 Isolate 停止工作 使用我的文件 isolate dart main print BAM 这会打印 BAM import dart c
  • 为我的应用程序需要与之通信的每一台主机使用一个 HttpClient 实例是否可以?

    我知道 当使用 Microsoft 依赖注入容器时 处理 HttpClient 实例的最佳实践是使用IHttpClientFactory接口 https github com aspnet Extensions blob master sr
  • 使用 json.js 字符串化多维数组时出现问题

    我有以下问题 stringify 但我认为我的 JavaScript 数组一定是错误的 这是我的代码 var questions new Array Valid hover function for i 0 i lt Questions l
  • 如何在GO中执行HEAD请求?

    我想使用 GO net http 获取页面的内容长度 我可以在终端中使用curl i X HEAD https golang org然后检查内容长度字段 use http Head https golang org pkg net http
  • json_decode 到自定义类

    是否可以将 json 字符串解码为 stdClass 以外的对象 不是自动的 但你可以按照老式的路线来做 data json decode json true class new Whatever foreach data as key g
  • 将 jQuery 与 Selenium WebDriver 结合使用 - 如何将 JSON 对象转换为 WebElement?

    我正在使用 Selenium WebDriver 我想执行 jQuery 代码来查找一些元素 我的代码如下 public function uploadGrantDoc script return itemlist grant file u
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo
  • Android 解析 JSON 卡在 get 任务上

    我正在尝试解析一些 JSON 数据 我的代码工作了一段时间 我不确定我改变了什么突然破坏了代码 当我运行代码时 我没有收到任何运行时错误或警告 我创建一个新的 AsyncTask 并执行它 当我打电话时 get 在这个新任务中 调试器在此行
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 在python中逐行复制文件

    我正在编写一个 python 程序来将文件逐行复制到新文件中 我的代码如下 其中我使用循环逐行复制文件 然而 由于文件中的行数可能会改变 有没有一种方法可以在 python 中逐行复制文件 而不使用依赖于数字的循环 而是依赖于 EOF 字符
  • WPF 中的多种变换效果

    我需要在 WPF 中通过 C 应用多重变换效果 我尝试了下面的代码 但我只看到最后一个效果 而不是两者一起 如果可以的话有什么线索吗 XAML
  • android 解析 .local (mDNS)

    我正在寻找一种使用 Android 4 0 4 解析 local 主机名的解决方案 由于 API 级别 15 没有 NSD 在设备上 我没有任何服务可供发现 只有主机名 您能提供一个如何解决的例子吗 我集成了 jmDNS 但不知道如何用于主
  • 如何将类数组应用于classList.contains?

    在我的 HTML 中 我有一个div像这样 div class a b c div 在我的 JavaScript 中 我有一系列我感兴趣的类 var goodClasses a c 在好的浏览器中 我可以使用很棒的classList功能来测
  • 在 FastAPI 中使用 `async def` 与 `def` 并测试阻塞调用 [重复]

    这个问题在这里已经有答案了 tl dr 以下哪个选项是正确的工作流程fastapi 如何以编程方式测试调用是否真正被阻止 而不是从浏览器手动测试 有没有压力测试延伸至uvicorn or fastapi 我有多个端点fastapi服务器 使
  • 使用 Python 2.7.x 连接到 Google Analytics 时出现 403 错误

    我尝试使用 Python 客户端 google api python client 从 Google Analytics API 获取数据 这是我使用的代码 from apiclient import discovery from oaut
  • jquery ui autocomplete _renderItem 似乎干扰 select 事件

    如果我使用 renderItem 我的选择事件将不起作用 如果我注释掉调用 renderItem 的最后一个代码块 则 select 事件将起作用 当我使用 renderItem 时 选择事件根本不会触发 var cache lastXhr
  • 删除一个数组中位于另一个数组中的项目

    我被我的剧本困住了 我需要比较两个数组 一个是查询的结果 另一个是文件的内容 Array1 Invoke Sqlcmd Query select name from person Array2 Get Content Myfile txt
  • 从“对等方重置连接”中恢复 Indy TCP 客户端

    在这种情况下我应该如何恢复 服务器崩溃 连接异常关闭 对几乎所有内容的调用都会导致 对等方重置连接 异常 我似乎已经通过在 except 块内的 TIdTCPClient 对象上调用 Disconnect 来修复它 但它会导致一个带有相同消
  • 如何检查辅助服务是否崩溃(Android Pie 现在在设置中显示此信息)?

    我现在发现安卓9了如果辅助功能服务停止工作 则显示信息 对于尝试利用辅助功能 API 的开发人员来说 这始终是一个痛苦 辅助功能看起来已启用 但服务已停止 为了让它恢复工作 需要关闭然后重新打开辅助功能 如果谷歌完全修复了这个问题 我会很高
  • AVRO 中的数据验证

    我是 AVRO 新手 如果这是一个简单的问题 请原谅 我有一个使用 AVRO 模式进行记录调用的用例 假设我有 avro 架构 name abc namepsace xyz type record fields name CustId ty
  • 既然他们停止为 Eclipse 开发 derby 插件,是否可以在 Eclipse 中使用 apache 的 derby ?

    我想使用 apache 中的 Derby 以便在我当前正在开发的桌面应用程序上包含数据库管理 不幸的是 我发现他们已经停止开发这个插件 并且我在网上阅读的所有教程都引用了这个插件 所以我的问题是 如何在 eclipse 上使用最新版本的 D
  • Jenkinsfile 中的故障后块不起作用

    我正在尝试使用并行步骤进行失败后操作 但它永远不会起作用 这是我的 Jenkins 文件 pipeline agent any stages stage test steps withMaven maven maven3 Maven ins
  • 如何在 LLDB 断点条件下使用堆栈内容?

    问题 我遇到过这样一种情况 我们在启动期间进行媒体播放 并且 objc exception throw 在此期间点击了大约 5 次 但总是被捕获 并且它是way媒体播放器对象的南边 我厌倦了 a 必须手动继续 n 次 或 b 必须禁用断点直
  • 将 Textview 添加到 FrameLayout 的确定位置

    我正在尝试添加一个textView to a frameLayout The TextView has wrap content属性 因此它会随着文本的增长而增长 我将其添加到FrameLayout有了这个功能 FrameLayout fi
  • Java中从磁盘备份和恢复sqlite到内存

    我正在尝试将 sqlite 文件读入内存以获得更好的性能 当关闭我的应用程序时 我想将其写回硬盘 我正在使用jdbc 3 7 2 Java 驱动程序 根据文档 我的代码看起来像 this conn DriverManager getConn
  • 如何使用自动布局在 MKAnnotation 中显示多行?

    我正在使用 Mapkit 如何多行输入MK注释视图 每个注释都有标题和副标题 我如何在以下的帮助下显示多行副标题自动布局 我找到了答案 请尝试我的答案 我们只需要编写代码 MKAnnotationView mapView MKMapView
  • Jade:加载外部javascript并调用函数

    我正在学习 Express Node Jade 现在在 Jade 文件中我想包含一个来自公共文件夹的 javascript 文件 仅用于该页面 例如 在 jade 文件中我输入以下内容 script src javascripts test
  • Delphi XE2 FireMonkey 是否支持 Indy 跨平台应用程序?

    看看带有 Firemonkey 的新 Delphi XE2 考虑到它是针对 Windows Mac OSX 和 iOS 进行编译的 VCL 组件在 FireMonkey 应用程序中毫无用处 我的问题是 是否有 将会有 Indy Firemo
  • 如何从 Dart http 调用返回 json / 如何完全使用流?

    这是我的代码 应该返回 json 我从这里改编了这段代码https github com flutter flutter issues 15110 Stream defaultReturn HttpClientResponse httpCl