问题标签 [sttp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
481 浏览

scala - 如何使用 sttp 将响应读取为 Observable[String]

我正在使用sttp客户端。我想将响应解释为除以行的字符串,例如Observable[String]

这里sttp流api:

那我怎么能得到Observable[String]

这里有一些想法:

1.有没有一种简单的split按行观察的方法?
2.或者也许我可以InputStream从响应中得到原始信息,所以我可以很容易地拆分它,但我找不到使用类似asStream[InputStream]
3的方法。或者也许只是使用 http 后端 witoutsttp层?

0 投票
1 回答
127 浏览

scala - 如何使用 Scala sttp FetchBackend 处理 html 中的 JavaScript?

我需要在 HTML 响应中执行 JavaScript。我正在使用 sttp 版本 1.5.12。根据我只需要包含的文档,implicit val sttpBackend = FetchBackend()但它不起作用。请参阅以下文档:https ://sttp.readthedocs.io/en/latest/backends/javascript/fetch.html

已经包含了对 Maven 的依赖。

例子:

我希望像其他支持的后端一样使用它。日食报告not found : value FetchBackend

任何帮助表示赞赏。

0 投票
0 回答
92 浏览

scala - 3rd 方隐式验证的 Spark 序列化解决方法

我正在运行一个 Spark 作业,该作业沿线执行一些 Http 调用。我决定使用一个Sttp需要implicitHttp 后端的库,在我的例子中HttpURLConnectionBackend():一个对象应用它创建一个新的类实例,它是不可序列化的。

因此,因为我的 Spark 作业扩展了 this trait,所以 Spark 作业中的 this 中的所有方法trait在执行程序上都不可用。

作为一个相当无脑的解决方法,我做了vala def,但是整理这些东西的推荐方法是什么?

Spark 作业本身是一个class,而不是一个object. 这样做的原因是在测试中模拟/存根提到的 Http 后端。

0 投票
1 回答
155 浏览

java - 使用 akka 流将数据分块写入文件

我使用带有akka后端的sttp lib从服务器加载文件。以下任何一种方法都会导致加载 1Gb 文件时占用大量内存:

VisualVM 绘制 1Gb 文件的顺序加载图。 在此处输入图像描述

是否有机会在写入后立即将数据写入块并从内存中逐出块

0 投票
1 回答
150 浏览

scala - 如何同时发出 10 个 http 请求?

我有 10 个请求

如何同时发送这些请求?

我试过

但这给了我各种有趣的编译错误。

0 投票
1 回答
176 浏览

scala - 使用 SttpBackendStub 进行单元测试流请求

我有一个返回要测试的源流的请求,如下所示:

但它失败了,因为SttpBackendStub.asynchronousFuture 不处理流响应

我怎样才能使用 SttpBackendStub 而不求助于类似的东西scalamock

0 投票
0 回答
150 浏览

scala - 如何使用 AsyncHttpClientCatsBackend 忽略 Scala 上的 SSL 认证?

在 Scala 上,我需要一个后端来发送一些 https 请求。我还必须最终信任我的服务器的证书。当我使用同步 HttpURLConnectionBackend 时,一切都很好,因为我可以更改我的 SSLContext 并将 X509TrustManager 替换为我的信任管理器。

现在我正在使用cats.effect重写这段代码,我应该让我的后端异步。所以我投了 AsyncHttpClientCatsBackend。它也是可定制的,尽管我找不到如何做同样的事情并忽略证书。我搜索并查看了 syncHttpClientCatsBackend 的实现,但没有成功。

0 投票
1 回答
483 浏览

scala - 是否将同步 HTTP 请求包装在被视为 CPU 或 IO 约束的 Future 中?

考虑以下两个片段,其中第一个使用 scalaj-http 请求包装Future,而第二个使用 async-http-client

使用全局 EC同步使用 Future 包装的客户端

使用全局 EC 的异步客户端

片段正在使用

前者需要 12 秒,而后者需要 6 秒。似乎前者的行为好像受 CPU 限制,但我不明白这是怎么回事,因为Future#sequence应该并行执行 HTTP 请求?为什么包装的同步客户端的Future行为与正确的异步客户端不同?异步客户端在幕后将调用包装在 Futures 中,难道不是这种情况吗?

0 投票
1 回答
95 浏览

scala - 如何在处理速率限制时异步发送 HTTP 请求?

免责声明:我是sttpMonix的新手,这是我尝试更多地了解这些库的尝试。我的目标是通过 HTTP GET 请求从给定 API 获取数据(客户端)-> 解析 JSON 响应-> 将此信息写入数据库。我的问题仅与第一部分有关。我的目标是以异步(希望是快速)的方式运行获取请求,同时有办法避免或处理速率限制。

以下是我已经尝试过的片段,似乎适用于单个请求:

我的问题:

  1. 如何通过使用 Monix 对多个 GET 请求(而不是单个请求)进行操作,同时保持代码异步和可组合
  2. 如何避免或处理 api 服务器施加的速率限制

附带说明一下,如果这将支持速率限制目标,我在使用另一个后端方面也很灵活。

0 投票
1 回答
164 浏览

scala - 如何运行 Monix 的 parSequenceUnordered 并处理每个任务的结果?

我目前正在努力实现对 API 的客户端 http 请求,并决定探索 sttp 和 monix 来完成这项任务。由于我是 Monix 的新手,我仍然不确定如何运行任务并检索它们的结果。我的目标是获得一系列 http 请求结果,我可以并行调用 -> 解析 -> 加载。

以下是我迄今为止尝试过的一个片段:

我的困惑相当简单(我猜)。如何运行Task.parSequenceUnordered我创建的任务,并处理(解析 http 结果)序列中的任务?

很高兴:出于好奇,在处理请求的任务序列时是否可以天真地引入速率限制/节流?我并不是真的在寻找构建复杂的东西。它可以像间隔批量请求一样简单。想知道 Monix 是否已经为此提供了帮助。