java - 将 Android 客户端添加到现有 GWT 服务器

标签 java android gwt

我刚刚获得了一个现有的 GWT Web 应用程序。这个应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用 GWT-RPC 与实现 RemoteServiceServlet 的服务器通信。

现在,我想做的是实现一个重用当前 GWT 应用程序的服务器部分的 Android 客户端。 Android 客户端不需要拥有当前浏览器客户端的全部功能。我只是想在不修改的情况下重用现有的服务器,以便浏览器和 Android 客户端都可以使用相同的服务器实现。我对 GWT 很陌生。在这种情况下你会怎么做?您是直接从 Android 应用程序向 servlet 服务器发送 HTTP 请求,还是有更好的方法来执行此操作?

谢谢!

最佳答案

我建议不要使用GWT-RPC 机制在服务器和任何非GWT 之间进行通信。原因是,GWT-RPC 屏蔽了通信的细节。它的内部结构可能会随着您使用的 GWT 版本而改变。

您应该使用什么取决于服务器应用程序和您的客户端的架构。

您可以尝试将 GWT servlet 与其他 servlet 包装在一起,以通用格式(例如 XML 或 JSON)提供数据。这样,您就独立于 GWT-RPC 内部结构,并且不必修改现有代码(包装器 servlet 可以放在另一个项目中,只引用现有的 GWT-RPC 服务器项目)。

这是一个例子:

GWT-RPC Servlet:

public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
        // Method delivering my task list to GWT client
        @Override
        public List<Task> getTaskList(final String clientId) {
           // Get task list ...
           return result;
        }
    }
}

现在您可以包装该 servlet 以返回 JSON 或 XML:

public class MyJsonServlet extends MyGwtServiceImpl {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
       List<Task> result = super.getTaskList(req.getParameter("clientId"));
       // Serialize result to JSON and write to OutputStream
    }
}

关于java - 将 Android 客户端添加到现有 GWT 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823550/

相关文章:

javascript - DOM 异常 : Blocked a frame with origin "http://localhost" from accessing a cross-origin frame

GWT 请求下载文件

java - 当版本低于 Lollipop 时 INSTALL_FAILED_DEXOPT

java - 在 Java 8 中使用收集器的简单示例

java - Android 中存储在静态变量中的数组列表

javascript - 滚动时页面的高度

java - 欧几里得距离计算某物是否靠近某物

java - 在 Main() 中调用一个类

android - Jetpack Compose 添加 onClick 将重新组合

android - Basic4Android IDE如何创建复杂的应用程序