0

次のコードを使用してカスタムHTTPヘッダーを取得しようとしていますが、毎回nullになります。なぜそれが機能しないのか誰かが知っていますか?高低を検索しましたが、なぜ機能しないのかわかりません。

public static Result test() 
    {

        String v = request().getHeader("version");

        System.out.println("test" + v);

return ok("success");
}

iPhoneアプリとrestclient.jarを使用してコードをテストしたので、クライアントがヘッダーを送信していないことが問題ではないようです。

どんな助けでも大歓迎です!

4

2 に答える 2

1

コードはcurlで正常に機能し、コンソールに入力します。

curl --header "version: 1.2" localhost:9000/
于 2012-11-03T21:09:49.507 に答える
1

私も何時間もこれに頭をぶつけました。Play 2.0は、HTTPヘッダーを大文字にすることで奇妙なことをしていることがわかりました。ヘッダーを「Message-Sender-Uid」として送信しましたが、Playでは「MESSAGE-SENDER-UID」として表示されました。何らかの理由で、Playはヘッダー全体を大文字にしました。解決策は、ヘッダーのマップでヘッダーのすべて大文字のバージョンを探すことです。

これが失敗した場合は、いつでもすべてのヘッダーをロガーに出力して、ヘッダーが存在するかどうかを確認できます。

何かのようなもの

Http.Request req = Http.Context.current().request();
Map<String, String> headerMap = req.headers();
for (String headerKey : headerMap.keySet()) {
    Logger.info("Key: " + headerKey + " - Value: " + headerMap.get(headerKey));
}

コントローラメソッドでこれを行うにはうまくいくはずです。

忘れないでください

import play.mvc.*;
于 2012-11-08T00:50:51.210 に答える