2

私はFBcookieを使用していて、それをjsonにデコードしようとしていますが、コードは次のようになります。

    def value = cookie.value

    String[] tokens = value.split('\\.')
    String decodeToken = new String(Base64.decodeBase64(tokens[1].getBytes()), 
            'UTF-8')
    def jsonValue = JSON.parse(decodeToken)

Cookieは、ログインプラグインを使用するときにFacebookが作成するCookieです。

さて、run-appを使ってこれを実行すると、問題はありません。ただし、run-warを使用して実行すると、JSONパーサーが文字列からJSONオブジェクトを作成しようとすると例外がスローされます。

原因:org.codehaus.groovy.grails.web.json.JSONException:{"algorithm": "HMAC-SHA256"、 "code": "AQCvjV .. ..の文字304に'、'、または'}'が必要です。 .... "user_id":... 50089 "\ 00 \ 00

さらにデバッグすると、デコード呼び出しから作成された文字列は、run-appのコンテキストで実行すると問題ないようです。しかし、run-warが実行されると、文字列の最後の文字は「}」ではなく、文字化けした文字になります。これにより、パーサーは例外をスローします。

これの原因は何でしょうか?これをさらにデバッグし始めるのに良いポイントは何でしょうか?

特定のエンコーディングを使用してgetBytes()を呼び出そうとしましたが、役に立ちませんでした。

4

1 に答える 1

0

run-app は grails アプリケーションを実行し、リソースからのリロードを可能にします

run-war は war ファイルを生成し、war ファイルを実行するため、リソースのリロードはありません。

手動で grails war を実行してから、Tomcat のローカル インスタンスで実行できます。

于 2012-04-20T14:43:14.057 に答える