2012-04-10 73 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