问题标签 [play-ws]

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 投票
4 回答
1589 浏览

scala - 无法使用 scalamock 模拟 WSRequest.post()

我正在使用 Scalamock 和 Scalatest 为 Play 应用程序编写单元测试。

我的原始代码如下所示:

在一部分中,我必须模拟对 Web 服务的外部调用,我正在尝试使用 scalamock:

我能够成功地使用文件模拟发布请求,但我无法使用 JSON 模拟发布请求。

我尝试单独放置存根函数引用,例如:

我得到第二行的编译错误:Unable to resolve overloaded method post

我在这里想念什么?为什么我不能模拟一种重载方法而不模拟另一种?

0 投票
2 回答
946 浏览

scala - Scala - 发出 WS http 请求

更新:方法返回类型 ANY 而不是类型 Future[string]。要求返回 String 类型。

我正在使用 play.ws 库 2.6 发出 http 请求。这以前是通过 curl 请求完成的,但这仅使用基本身份验证。

下面是我的代码,我试图从这个函数返回一个 json 字符串,以便在另一种方法中反序列化。

运行时会产生错误:

我正在努力达到理想状态:

  • 一个字符串返回(案例类和json方法解包一个字符串)
  • 同步请求(如果异步我需要等待完成以进行应用程序)
  • 安全(允许使用令牌进行验证)

感谢任何帮助!

0 投票
1 回答
194 浏览

scala - Scala Play WS 客户端动态进行并行 REST 调用

在我的 scala play 框架应用程序中,我必须根据列表中的 url 动态调用多个 REST 调用。

我遇到了以下多次调用的代码:

但是我怎样才能使它动态化,以便从列表中选择 url,并且响应也存储在列表中以供进一步处理。

0 投票
1 回答
541 浏览

java - WS 调用在播放框架中的 SSL 问题

我遇到了从 Play 2.6 应用程序调用 Freshdesk API 的问题,我创建了一个库来使用 Retrofit 和另一个类来使用 Play WS 执行相同操作,但是当我在 Play 应用程序中启动该进程时,每个选项都失败了。

我测试了我的 Retrofit 客户端,创建/删除操作在我的集成测试中运行良好。

这是我使用 Play WS 而不是 Retrofit 客户端的代码。

这是 Play WS 调用的堆栈跟踪:

0 投票
1 回答
70 浏览

scala - 在 play-ws 多部分请求中发送 json 部分

我正在实现一个外部 API,我需要发送一个与 JSON 元部件捆绑在一起的文件附件。

服务器不接受以下代码,因为 Play 硬编码DataPartto的内容类型text/plain,并且服务器期望application/json

API 端点的示例 curl(我已经测试和验证)命令是:

有没有一种简单的方法可以强制DataPart使用不同的内容类型或使用不同的部分来更好地控制我发送的内容?

0 投票
0 回答
23 浏览

playframework - 玩 2.3 WS keystore 配置

我有一个 p12 密钥库,它有一个密码,例如 [密钥库密码],里面的私钥也用另一个密码加密,例如 [私钥密码]。如何在 play ws 中为客户端身份验证配置它。我在 application.conf 中尝试了以下但没有工作。

0 投票
0 回答
253 浏览

scala - 使用 play-ws 为 playframework 创建胖 jar 时的依赖项重复

我注意到,当尝试使用 play-ws(sbt 程序集)为 playframework 2.7 构建 fat jara 时,会发生依赖项重复。我收到很多与 javax.activation-api 和 shaded-asynchttpclient 有关的错误,例如

问题原来是 play-ws 没有正确执行 sbt 组装。我的代码中唯一明确使用 javax 的地方是依赖注入。改用 guice 会得到相同的结果。这是我的 build.sbt (基于https://www.playframework.com/documentation/2.7.x/Deploying

0 投票
0 回答
140 浏览

scala - 播放独立 WS 客户端无法在不导入核心播放框架 jar 的情况下上传多部分文件

使用 play-ws-standaloneplay-ws-standalone 版本 2.1.2

我正在使用 play 独立 ws 客户端在我的 Scala 项目中进行休息调用。在我遇到问题的代码库的特定部分中,我不导入核心播放框架 jar(我也不想,独立的 ws 客户端不应该需要它)。

我遇到的问题是发送带有多部分文件的发布请求。根据示例,我应该使用 play.api.mvc.MultipartFormData.FilePart[Source[ByteString, Any]],它位于核心 Play 框架 jar 中(与所有其他与 ws 客户端相关的类不同,可以在play-ws-standalone jar)。

DefaultBodyWritables 只提供了上传单个文件的 BodyWritable 实现:DefaultBodyWritables.writableOf_File,所以不符合我的目的。

我知道我可以为多部分/表单数据媒体类型实现自己的 BodyWritable,但不确定如何使其工作。Play 框架中的 MultiPartFormData 实现相当复杂。这方面的任何提示都会有所帮助。

TLDR;

FilePart 不能与 Play 框架解耦有什么原因吗?是否有任何解决方法可以让我免于在此模块中导入整个框架(我真的希望避免)以使用 play-ws-standalone 上传 multipart/form-data?

0 投票
1 回答
128 浏览

scala - 试图了解使用哪个播放库

以下库之间有什么区别:

我只是想弄清楚哪个是正确的使用。我所做的是在一个单独的库中创建一个 Play 模块,我想将它注入到一个 Play 应用程序中。但是当我使用上面列出的第一个库时,它只提供了一个StandaloneWSClient. 当我将其注入 Play 应用程序时,它无法将实现绑定到它。但是当我切换第二个库时,它提供了一个WSClientPlay 应用程序可以找到要绑定的实现,因为它已经有一个可以在 build.sbt 定义中指定的实现,即ws.

0 投票
1 回答
691 浏览

scala - 播放 WS 请求超时比 withRequestTimeout 快

我正在发出一个产生未来的 Web 服务请求。像这样(简化复制):

在 WSClient 放弃之前,被调用的 Web 服务有 180 秒的时间做出响应。

此服务类的客户端现在将其称为service.callWebService(). 当第三方 Web 服务花费 > 120 秒时,而不是等待 180 秒,未来会在 120 秒超时(线程java.util.concurrent.TimeoutException: Read timeout to localhost/127.0.0.1:8081 after 120000 ms中抛出application-akka.actor.default-dispatcher-3)。

感谢有关如何将默认调度程序使用的 120 秒增加到 180 秒的任何指示。

笔记:

  1. 该应用程序在其他地方使用 Akka 演员。但是这个控制流中没有参与者。
  2. 这篇文章很接近但没有帮助。