2012-04-10 4 views
1

Я использую GWT RPC для связи между клиентом и сервером. Я хочу, чтобы читать дату браузера на стороне сервера, и для этого я использую setRpcRequestBuilder из класса ServiceDefTarget, чтобы запросить мой запрос и добавить заголовок, который я хочу.GWT RequestBuilder установить клиент Date to HTTP Date POST 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 

Ok, это прекрасно работает, но когда я пытаюсь установить заголовок «Дата», он не отображается на стороне сервера. Почему это? Любой может помочь. Я буду очень полезен. :)

ответ

3

Date является predefined header из HTTP, и по определению, XMLHttpRequest (вещь за GWT-х RequestBuilder) cannot let you set it на произвольное значение.

Во всяком случае, когда крафт своих собственных заголовков, вы должны добавить префикс, чтобы избежать конфликтов с другими вещами в сети, добавляя заголовки, что-то вроде MyApp-Date или X-MyApp-Date (как GWT делает это с X-GWT-Permutation и X-GWT-Module-Base в GWT-RPC и RequestFactory)

+1

спасибо. Это то, о чем я думал. Что касается префиксов, я знаю об этом, я просто нахожусь в «режиме тестирования», поэтому я пока не уделяю этому много внимания. :) Спасибо за ваш ответ и совет. –

Смежные вопросы