问题标签 [spray-client]

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 回答
5459 浏览

unit-testing - 如何模拟喷雾客户端响应

我有一个简单的喷雾客户端:

完整的代码可以在这里找到。

我想模拟服务器的响应来测试SuccessFailure案例中的逻辑。我找到的唯一相关信息是这里,但我无法使用蛋糕模式来模拟 sendReceive 方法。

任何建议或示例将不胜感激。

0 投票
2 回答
4923 浏览

scala - 使用喷雾客户端的 POST 请求

我想通过 HTTP POST 请求将 XML 发送到服务器,使用 Spray-client 并设置一些标头等。但是,我能找到的只有 JSON 请求的示例。

有人可以使用 Spray-client 通过 HTTP POST 通信提供 XML 的简单代码片段吗?

谢谢!

0 投票
1 回答
3147 浏览

scala - Spray Client Post Multipart

我想使用 Spray 将多部分表单发布到服务器。特别是我想发布一张图片。

我遇到的问题是将文件编组为多部分。尽管在 Spray 他们提到它是一个默认的 Marshaller,但我似乎无法将两者结合在一起。

我目前使用的是 Spray 1.0-M7,因为我还没有迁移到 Scala 2.10,如果该示例可以与该分支兼容,那就太好了。

我目前拥有的是这样的:

当然,我收到一条错误消息:

我发现的大多数示例都使用 content(as[X]) 指令来编组,但我没有使用 Spray-routing,我只需要在基于另一个框架的应用程序中使用 spray-client 执行帖子。

谢谢

编辑

我实际上已经设法像这样编组它:

不幸的是,这仍然不起作用,数据正在传输,但服务器找不到文件。

一个wireshark捕获揭示了以下内容:

这是使用 Advanced Rest Client 发出的有效请求的捕获:

0 投票
2 回答
4082 浏览

scala - 我可以为特定管道请求设置超时和重试次数吗?

当使用 spray 的流水线来发出这样的 HTTP 请求时:

有没有办法为请求指定超时以及为该特定请求重试的次数?

我发现的所有文档都只是在配置中做的参考(即使那样我似乎也无法让它工作)。

谢谢

0 投票
0 回答
381 浏览

scala - Spray客户端有时会抛出损坏的数据(CRC32校验和错误)

我把我的客户代码写成

大多数时候它工作得很好,但有时会抛出一个

我还从 akka 日志中发现了一些可能与此相关的消息

然后我用

gzip -t用来测试那个文件。它说

无效的压缩数据--crc 错误

似乎响应已损坏。

但是我尝试了使用 chrome 插件的请求,它永远不会失败。

是否可以避免异常?

0 投票
0 回答
352 浏览

scala - spray-client:记录通过网络发送/接收的实际 HTTP

在 Apache HTTP 客户端中,可以打开“线路日志”的概念,打印出客户端代码生成的实际 HTTP 文本并发送到服务器。

如何使用 spray-client 做同样的事情?我当然可以添加 RequestTransformer 和 ResponseTransformer 并使用 .toString 打印它们,但这并没有告诉我在 TCP 级别上实际序列化为 HTTP 的内容。

0 投票
1 回答
1177 浏览

scala - 使用 Http 标头通过 spray-client 解组响应

spray-client用来访问 REST 服务。服务器返回的部分数据在 http 响应头中(其余在响应正文中)。

为了能够解组响应,我使用Unmarshaller. 但是,解组器只能访问响应正文(作为 的实例HttpEntity),并且在此阶段似乎无法访问所有标头。

这是当前的管道和解组器代码:

解组时是否可以访问它们?有什么解决办法吗?

0 投票
0 回答
458 浏览

scala - 如何在 Scala 中使用 Spray Client 跟踪中型文件下载的进度

我正在尝试使用 Spray 从我的 Scala 应用程序中下载一个中等大小的文件,比如视频。
我需要下载文件,并且对于我收到的每个卡盘(可能卡盘尺寸是我将通过配置设置的),来跟踪整个过程的进度(也就是进度条之类的)。
另外,我想避免在保存之前将整个文件保存在内存中,而是在收到每个卡盘时保存它(并记录它)。

我查看了文档,并且有点在线。
但是,我似乎找不到这样做的明确方法。
我唯一发现的是这个链接,它说当时喷雾客户端不支持这个用例,我应该直接使用喷雾罐......虽然没有例子,所以我还是有点困惑。

有人可以提出一种方法吗?指出我正确的方向?您将如何下载 30MB 的文件?

谢谢

0 投票
0 回答
857 浏览

scala - 使用 Chunked Response 处理 Spray 和自定义 actor 中的断开连接和重新连接

我是 Spray 的新手,并试图实现一个从服务器接收数据流的客户端。我当前的代码如下所示。客户端向 HTTP 服务器发送一个请求,然后该服务器返回一个数据流(作为分块响应)。我检查了它是否连接到服务器并可以得到响应。

但是,我不清楚应该如何处理断开连接和重新连接。例如,(A)如果我失去了网络连接或(B)我的客户端超时,因为当时服务器可能没有任何数据要发送。任何指针/示例将不胜感激。

更新

首先,我想检测上面的事件(A)和(B)。当客户端遇到上述 (A) 或 (B) 时,它应该重新建立连接并重新进行身份验证,以便它可以继续(返回connected状态以获取数据流。

这些是我的内容resources/application.conf

0 投票
0 回答
145 浏览

node.js - 优化一个不起眼的大型 node.js 响应

我正在响应从 node.js 到基于 Akka spray.io 的演员的大(10 MB)有效负载,并从 spray/akka 获得块大小错误[akka://spray-actor-system/user/IO-HTTP/group-0/3] Received illegal response: HTTP chunk size exceeds the configured limit of 1048576 bytes

我的 node.js 代码只是简单地在一个res.end命令中发送响应。(这样做是因为响应是以非流式方式生成的,因此在进一步流式传输它时没有“固有”的增益,至少在添加 spray.io 客户端之前是这样)。

我想知道使用 node.js api 对响应进行分块的最简单方法是什么,以防我不喜欢通过增加 spray.io 大小限制来处理非常大的 http 响应。此外,从 node.js 发送这种大小的响应是否有任何性能下降 - 即 node.js 是否阻塞 res.end 操作?