小编典典

伪造GWT同步RPC调用

ajax

首先,我知道进行同步调用是“错误的”,并且知道“不可能”。

但是,在非常复杂的情况下(我不知道如何解释),我需要等待服务器的响应,我正在对GWT RPC调用使用GWT-Platform命令实现。

我正在为此寻找某种“黑客”。

提前致谢。


阅读 313

收藏
2020-07-26

共1个答案

小编典典

有解决方案,但这并不容易(例如,您无法翻转单个参数以使其起作用)。GWT在后台使用了普通的JS
XMLHttpRequest。在GWT中,有一个覆盖类型称为com.google.gwt.xhr.client.XMLHttpRequest。此类用于通过HTTP向服务器发送请求。每个JS
XMLHttpRequest首先通过调用open方法来初始化。此方法具有很少的参数,但是第三个参数指定请求是否应该异步。如果将其更改为false,则请求将是同步的。

但是GWT-
RPC不直接使用此类,而是通过RpcRequestBuilder使用它,并且此类也不直接使用XMLHttpRequest,而是使用RequestBuilder。

因此,您需要做的是创建RpcRequestBuilder和RequestBuilder的自定义版本(它们将使用初始化为同步的XMLHttpRequest)。

您可以通过将其转换为ServiceDefTarget来将RPCRequest构建器设置为GWT-RPC服务实例。

您是否仍想拥有同步的GWT-RPC请求?

2020-07-26