我正在使用 GWT RPC 在客户端和服务器之间进行通信。 我希望能够在服务器端读取浏览器的日期,为此我使用 ServiceDefTarget 类中的 setRpcRequestBuilder 来自定义我的请求,并添加我想要的 header 。
在客户端我使用:
private static final RpcRequestBuilder rpcReqBuilder = new RpcRequestBuilder() {
@Override
protected RequestBuilder doCreate(String serviceEntryPoint) {
RequestBuilder builder = super.doCreate(serviceEntryPoint);
builder.setHeader("Date1", new Date().toString());
return builder;
}
};
......
((ServiceDefTarget) greetingService).setRpcRequestBuilder(rpcReqBuilder);
//rpc call
greetingService.greetServer(.........)
在服务器端我这样做:
HttpServletRequest request = this.getThreadLocalRequest();
Enumeration<?> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = (String) enumeration.nextElement();
String value = request.getHeader(name);
System.out.println(name + ": " + value);
}
在所有默认标题中打印
Date1: Tue Apr 10 12:19:28 BST 2012
好的,这工作正常,但是当我尝试设置“日期” header 时,它不会显示在服务器端。这是为什么?任何人都可以提供帮助。我会很有帮助的。 :)
最佳答案
Date
是 predefined header HTTP,根据定义,XMLHttpRequest
(GWT 的RequestBuilder
背后的东西)cannot let you set it到任意值。
无论如何,在制作自己的 header 时,您应该添加一个前缀以避免与网络上添加 header 的其他内容发生冲突,例如 MyApp-Date
或 X-MyApp-Date
(就像 GWT 在 GWT-RPC 和 RequestFactory 中使用 X-GWT-Permutation
和 X-GWT-Module-Base
一样)
关于http - GWT RequestBuilder 将客户端日期设置为 HTTP 日期 POST header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10089792/