gpt4 book ai didi

java - 通过 Web 服务公开网站

转载 作者:行者123 更新时间:2023-11-29 04:28:50 25 4
gpt4 key购买 nike

我知道我问的有点奇怪。有一个 Web 应用程序(我们无法访问其源代码),我们希望将其一些功能公开为 Web 服务。

我想使用像 Selenium WebDriver 这样的东西,所以我根据 Web 服务请求在应用程序上模拟 Web 点击。

我想知道这是否是更好的解决方案或模式。

我要提到的是,该应用程序是使用 Java、Spring MVC(它不是 SPA)和 Spring Security 编写的。并且有一个CAS服务器提供SSO。

最佳答案

有多种实现方式。在我看来,Selenium/PhantomJS 不是最好的选择,因为如果网络设计得当,你可以只使用提供的 HTML 甚至一些 API 与其交互,而不需要所有的 CSS,并执行 javascript 异步请求。由于您的页面不是 SPA,很可能“API”已经以 GET/POST 请求的形式存在,您可能很幸运,没有 CSRF 保护。

首先需要解决CAS的认证问题。 oAuth 中有多种类型的身份验证,但您应该获得一个 API token ,使您能够访问该应用程序。此 token 应以 HTTP header 或 Cookie 的形式添加到每个请求中。理想情况下,此 token 不应过期,否则您将需要在您的应用中实现重新验证逻辑。

身份验证部分解决后,您需要相当多的耐心,使用您首选的网络浏览器的网络检查器打开目标网站,然后转到“网络”面板并执行您想要以编程方式运行的操作。在那里您会找到包含所有 header 和内容以及响应的请求。这就是您需要编码的内容。在 Java 中有很多库可以实现这一点。如果您需要解析 HTML,可以查看 Jsop,但要运行普通的 GET/POST 请求,请使用 RestTemplate(在 Spring 中)或 JAX- RS/ Jersey 2 客户端

如果查询结果在一段时间内保持不变,您可能会考虑实现缓存层以提高性能,或者您可以假设在 5 分钟内,对同一查询的响应将相同。

您可以使用自己喜欢的语言/框架创建应用。我建议从 SpringBoot + MVC + DevTools 开始。如果您需要解析一些 HTML,那将包含您需要的所有内容 + Jsoup。稍后您可以根据需要添加缓存提供程序。

关于java - 通过 Web 服务公开网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751542/

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