5

我有类似的要求

5|0|7|http://localhost:8080/testproject/|29F4EA1240F157649C12466F01F46F60|com.test.client.GreetingService|greetServer|java.lang.String|myInput1|myInput2|1|2|3|4|2|5|5|6|7|

我想知道 GWT 如何生成 md5 值29F4EA1240F157649C12466F01F46F60?它是基于客户端 ip 和日期吗?谁能指出我正确的代码?我只是找到有关历史令牌的东西,但这对我来说看起来不同。

4

2 回答 2

3

好的,经过一番研究,我想我找到了答案。
您应该一直在寻找的关键字是“ strong name ”(或“ strongName ”)和/或permutation,因为似乎通过 RPC 请求,他们发送了 permuatation strong name(即 MD5 哈希),因此您可以在服务器端区分请求是从哪个排列发送的。
核心函数是Util.computeStrongName,它计算提供的字节数组的 MD5 哈希(d'oh),并添加了 catch:

/*
 * Include the lengths of the contents components in the hash, so that the
 * hashed sequence of bytes is in a one-to-one correspondence with the
 * possible arguments to this method.
 */

从那里,我追踪到链接器,然后追踪到通过这个函数提供的PermutationResult :Util.computeStrongName

/**
 * The compiled JavaScript code as UTF8 bytes.
 */
byte[][] getJs();

嗯,我希望这至少有点帮助;)如果这仍然不能回答您的问题(或者您正在寻找不同的东西),请尝试trunk/user/src/com/google/gwt/user/client/rpc(从RpcRequestBuilder.java开始)。

于 2010-02-02T23:58:44.193 回答
0

正如 Igor 所说,GWT 使用应用程序代码的 MD5 散列来为应用程序的每个版本的每个排列生成唯一名称。您引用的特定哈希是 GWT RPC 请求有效负载的一部分,用于标识服务器上的 .gwt.rpc 序列化策略文件。该策略文件说明哪些 Java 对象可以序列化为 GWT RPC 服务中请求、响应或抛出异常的一部分。

于 2010-06-25T00:23:55.840 回答