2012-04-10 6 views
1

Ich verwende GWT RPC, um zwischen Client und Server zu kommunizieren. Ich möchte in der Lage sein, das Datum des Browsers auf der Serverseite zu lesen, und dafür benutze ich setRpcRequestBuilder von der Klasse ServiceDefTarget, um meine Anfrage anzupassen und die gewünschte Kopfzeile hinzuzufügen.GWT RequestBuilder Client-Datum auf HTTP Datum setzen POST-Header

Auf der Clientseite Ich verwende:

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(.........) 

Auf der Serverseite ich tun:

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); 
    } 

, die unter allen Standardschriften druckt

Date1: Tue Apr 10 12:19:28 BST 2012 

Ok, das funktioniert gut, aber wenn ich versuche, den Header "Date" zu setzen, wird er auf der Serverseite nicht angezeigt. Warum das? Jeder kann helfen. Ich werde sehr hilfreich sein. :)

Antwort

3

Date ist ein predefined header von HTTP und per definitionem XMLHttpRequest (das Ding hinter GWT RequestBuilder) cannot let you set it auf einen beliebigen Wert. Wie dem auch sei

, wenn Sie Ihre eigenen Header Crafting, sollten Sie ein Präfix zu vermeiden Konflikte mit anderen Dingen auf dem Netzwerk hinzugefügt Header, so etwas wie MyApp-Date oder X-MyApp-Date hinzufügen (wie GWT tut es mit X-GWT-Permutation und X-GWT-Module-Base in GWT-RPC und RequestFactory)

+1

Vielen Dank. So habe ich gedacht. In Bezug auf die Präfixe, die mir bekannt sind, bin ich gerade im "Test-Modus", also kümmere ich mich nicht wirklich darum. :) Danke für deine Antwort und deinen Rat. –