1

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

在客户端我正在使用:

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

好的,这很好,但是当我尝试设置“日期”标头时,它不会显示在服务器端。这是为什么?任何人都可以提供帮助。我会很有帮助的。:)

4

1 回答 1

3

Date是 HTTP 的预定义标头,根据定义,XMLHttpRequest(GWT 背后的东西RequestBuilder不能让您将其设置为任意值。

无论如何,在制作自己的标头时,您应该添加一个前缀以避免与网络上添加标头的其他事物发生冲突,例如MyApp-DateX-MyApp-Date(就像 GWT 在 GWT-RPC 和 RequestFactory 中所做的X-GWT-Permutation那样X-GWT-Module-Base

于 2012-04-10T16:14:12.453 回答