问题标签 [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 投票
2 回答
62 浏览

scala - 如何使用 Circe 的手动解码器反序列化非固定的 json 数组?

我有一个看起来像这样的 JSON:

我主要对解析/反序列化数据列表感兴趣,我想手动进行(出于某种神秘原因,我更喜欢手动方式)。

如果这是相关的,我正在使用 sttp 的 circe 库sttp.client.circe._,目的是将来自 get 请求的传入数据直接解析为使用asJson.

获取 sttp 请求类似于:

这是我到目前为止所尝试的:

我的方法的问题(我认为)是.downArray让我只序列化用户数组中的第一个用户。

我的目标是能够拥有一些用户序列(List[User]可能是这样),但目前我最终只反序列化数组中的一个用户。

值得一提的是,“data”数组,并不包含固定数量的用户,每次api调用都会产生不同数量的用户。

0 投票
1 回答
249 浏览

scala - 完成请求后如何关闭 STTP 后端?

我目前正在使用 Monix 后端学习和玩 STTP。在处理完所有请求(每个请求都是一个任务)后,我主要坚持关闭后端。

我创建了类似于我的问题的示例/模拟代码(据我了解,我的问题更普遍,而不是特定于我的代码):

我的 fetch (api call maker) 函数看起来像:

由于我的主要任务包含稍后需要处理的其他任务,因此我需要找到一种替代方法来从外部关闭 Monix 后端。在我消费请求后,有没有一种干净的方法来关闭后端List[Task[Response[Either[String, String]]]]

0 投票
2 回答
383 浏览

scala - Tapir 无法使用“DecodingFailure(CNil, List(DownArray))”解码密封特征列表

Tapir 文档声明它支持解码密封特征:https ://tapir.softwaremill.com/en/latest/endpoint/customtypes.html#sealed-traits-coproducts

但是,当我尝试使用此代码执行此操作时,出现以下错误:

构建.sbt:

可以在此处找到此特定端点的文档:https ://ip-api.com/docs/api:batch

0 投票
1 回答
87 浏览

scala - Sttp Uri 避免解码

我正在尝试从预签名的 s3 url 下载文件:

当我将其转换为 Uri

它解码%3A. activity-2021-02-01_00%3A34%3A43.zip-> activity-2021-02-01_00:34:43.zip

当我尝试使用解码的 Uri 获取文件时,我收到以下错误消息:

The request signature we calculated does not match the signature you provided. Check your key and signing method.

我认为 uri 解码会导致问题,因为 curl 可以%3A正常工作,但:不能。

有没有办法避免解码路径?我找不到任何关于它的信息。

我正在使用以下 sttp 版本。

0 投票
0 回答
172 浏览

scala - 使用 Scala sttp 客户端优雅地处理错误

我正在使用 scala sttp 客户端,特别是使用 Monix 后端,我有以下代码:

我有一组通过此方法运行的 URL:

然后在我的调用者函数中执行任务:

然后我对具体化类型进行模式匹配并返回,我想要的不仅仅是成功和失败,但我想同时拥有这两个值:

我需要获取带有相应成功或失败消息的 URL 列表。使用我所拥有的这种方法,我只能得到其中一个,这在我进行模式匹配时很明显。如何同时收集成功和失败?

0 投票
0 回答
58 浏览

scala - 使用sttp将响应保存为scala中的文件

我已经设置了一个 api,它在给定的路径中发送文件的数据。我正在尝试从 api 获取 .xlsx 文件并将其传递给XSSFWorkbook进一步处理。为此,我尝试了两种方式:

  1. 将内容传递给 InputStream,然后将其传递给 XSSFWorkbook。这是一个错误invalid code lengths set
  1. 将文件保存在某个本地路径中并读取它。但它正在破坏 xlsx 文件,就好像我试图将响应保存为 Postman 中的文件一样。

我可以知道上述方法是否有任何问题或有更好的方法吗?

PS:我提到的API是建立在fastapi之上的。

编辑:实施getFileContent

0 投票
1 回答
136 浏览

scala - Sttp Client 3 ZLayer 类型不匹配

我使用 ZLayer 和 Sttp Client(async 来创建简单的 http 请求者应用程序,但我发现我无法解决的类型不匹配错误。谁能告诉我为什么我收到类型不匹配错误?

我使用这些版本的 scala 和库。

java -> 8.282.08.1-amzn

斯卡拉-> s.13.5

dev.zio -> 1.0.7

com.softwaremill.sttp.client3 -> 3.3.0

这是整个代码

0 投票
0 回答
39 浏览

sttp - sttp 的 http4s-backend (scala 3) 在哪里?

此处的 sttp 文档页面https://sttp.softwaremill.com/en/latest/backends/http4s.html要求使用"com.softwaremill.sttp.client3" % "http4s-backend_3" % "3.3.6",但这不在 maven Central 中。我尝试使用 g:com.softwaremill.sttp.client3 a:http4s-backend_3或只是在中央搜索,a:http4s-backend_3但我无法找到这种依赖关系。sttp 文档页面没有提到任何其他 repo。

谢谢

0 投票
0 回答
36 浏览

scala - 多部分请求通过 sttp(zio) 失败

我正在尝试使用sttp(zio version)来调用 aws s3 存储桶上传。以下是我正在使用的代码:

它取得了成功,postman但在这里失败了,说有不止一个属性。我得到的确切错误如下:

也许 sttp 正在以不同的方式考虑身体的各个部位,因为最终它也获得了成功akka-http

0 投票
0 回答
141 浏览

imap - RocketChat:电子邮件身份验证不断失败

我们一直在尝试将我们的电子邮件服务器连接到 Rocketchat,但我们不断收到授权错误(请参阅下面的日志)。这可能与在表单中必须添加用户和密码这一事实有关,但用户和密码的内容不是很清楚。我们已经尝试了我们能想到的所有可能的组合,但我们有点没有想法。建议?

提前致谢。

服务器设置信息 Rocket.Chat 服务器版本:CE 3.15.1 操作系统:ubuntu 20.04 部署方式:digitalocean IaaS 运行实例数:1

日志:异步函数回调中的异常:错误:身份验证失败。在 Parser 的 Connection._resTagged (/opt/Rocket.Chat/programs/server/npm/node_modules/imap/lib/Connection.js:1502:11)。(/opt/Rocket.Chat/programs/server/npm/node_modules/imap/lib/Connection.js:194:10) 在 Parser.emit (events.js:314:20) 在 Parser.EventEmitter.emit (domain. js:483:12) 在 Parser._resTagged (/opt/Rocket.Chat/programs/server/npm/node_modules/imap/lib/Parser.js:175:10) 在 Parser._parse (/opt/Rocket.Chat/程序/服务器/npm/node_modules/imap/lib/Parser.js:139:16) 在 Parser._tryread (/opt/Rocket.Chat/programs/server/npm/node_modules/imap/lib/Parser.js:82: 15) 在 TLSSocket.emit (events.js:314:20) 的 TLSSocket.Parser.cbReadable (/opt/Rocket.Chat/programs/server/npm/node_modules/imap/lib/Parser.js:53:12) TLSSocket.EventEmitter.emit (domain.js:483: