gpt4 book ai didi

java - 在 Java Controller 中检索 play.api.mvc.Request

转载 作者:行者123 更新时间:2023-12-02 05:08:46 25 4
gpt4 key购买 nike

我目前正在使用 play! 开发 RESTful API。用于学术项目的框架 2.x。

我尝试使用 Apache Oltu库,但由于他们大量使用 HttpServletRequest/Response 我无法使用它。然后我找到了 HttpServletRequest 的 play 请求包装器,但它适用于 play 1.x。因为我不了解 servlet,所以我无法自己编写包装器,所以我在网络上搜索了其他内容。

我正在尝试使用 oauth2play2scala我正在使用一个库(它是用于 play 2.x 的 Oltu 端口)来实现 OAuth 提供程序,但我面临的问题是该库是为 Play 的 Scala API 编写的,而我只使用 Java。

正如您在 oauth2play2scala 存储库的示例代码中看到的,我需要将 play.api.mvc.Request 实例传递给 OAuthAuthzRequest 构造函数。 play.api 包中的所有类都可以在 scala 中使用,而该包之外的类可以在 Java 中使用。为了构建 OAuthAuthzRequest,我需要:

  • 检索 play.api.mvc.Request 实例(从 Scala 到 Java)OR
  • 找到一个包装器,以便将 play.mvc.Request (Java) 用作 play。api.mvc.Request (Scala)
  • 另一种我没有想到的替代方案:D

提前致谢

最佳答案

从 Play 2.5.10 开始,浏览 API 后(您需要一个好的 IDE :)),我发现您可以简单地执行以下操作:

val jRequest: play.mvc.Http.Request = ... // your Java request
val sRequest: play.mvc.api.Request = jRequest._underlyingRequest

参见Http.Request Javadoc以及注释仅供内部游戏使用,但我在我的用例中需要它。但是,可能无法保证底层始终已填充,现在进行测试......并且有效!隧道传输 Scala -> Java -> Scala 时,重要的是确保首先使用 JavaHelpers.createJavaContext(request.asInstanceOf[Request[RequestBody]]) 创建 jContext,因为 createJavaContext (Request[RequestBody]) 重载实现是唯一填充 _underlyingRequest 的实现。

在此处查看工作示例 play-authenticate-usage-scala和相关的discussion in the playframework .

关于java - 在 Java Controller 中检索 play.api.mvc.Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27533923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com