2012-04-10 77 views
1

我正在使用GWT RPC在客户端和服务器之间进行通信。 我希望能够在服务器端读取浏览器的日期,为此我使用ServiceDefTarget类中的setRpcRequestBuilder来成本化我的请求,并添加我想要的标题。GWT RequestBuilder设置客户端HTTP日期日期POST标题

在客户端,我使用的是:

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 

好,这工作正常,但是当我尝试设置“日期”标题时,它不会显示在服务器端。这是为什么?任何人都可以帮忙。我会非常有帮助。 :)

回答

3

Date是HTTP的predefined header,根据定义,XMLHttpRequestcannot let you set it(GWT背后的RequestBuilder的东西)为任意值。

无论如何,起草自己的头时,你应该添加一个前缀,以避免与网络添加标题,像MyApp-DateX-MyApp-Date在其他事情上的冲突(如GWT确实它与GWT-RPC和RequestFactory X-GWT-PermutationX-GWT-Module-Base

+1

谢谢。这就是我的想法。 关于前缀我知道这一点,我只是在“测试模式”,所以我并没有真正注意到这一点。 :)感谢您的回答和建议。 – 2012-04-11 09:11:52