1

クライアントとサーバー間の通信にGWTRPCを使用しています。サーバー側でブラウザーの日付を読み取れるようにしたいので、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

わかりました。これは問題なく機能しますが、「Date」ヘッダーを設定しようとすると、サーバー側に表示されません。何故ですか?誰でも助けることができます。私はとても役に立ちます。:)

4

1 に答える 1

3

DateはHTTPの事前定義されたヘッダーXMLHttpRequestであり、定義上、 (GWTの背後にあるものRequestBuilder)はそれを任意の値に設定することはできません。

とにかく、独自のヘッダーを作成するときは、ヘッダーを追加するネットワーク上の他のものとの競合を避けるためにプレフィックスを追加する必要があります。たとえば、MyApp-DateまたはX-MyApp-Date(GWTがGWT-RPCおよびRequestFactoryで行うようX-GWT-PermutationX-GWT-Module-Base

于 2012-04-10T16:14:12.453 に答える