Grails:run-war和run-app之间的行为差​​异

时间:2012-04-20 14:32:28

标签: facebook json grails

我正在使用FB cookie并尝试将其解码为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在使用登录插件时创建的。

现在,当我使用run-app运行时,没有问题。但是,当使用run-war运行它时,当JSON解析器尝试从String创建JSON对象时会抛出异常。

  

引起:org.codehaus.groovy.grails.web.json.JSONException:{“algorithm”的字符304处的','或'}':“HMAC-SHA256”,“code”:“AQCvjV ......。 “USER_ID”:... 50089" \ 00 \ 00

进一步调试,似乎从解码调用中创建的String在run-app的上下文中运行时很好。但是当run-war完成时,String的最后一个字符不是'}'而是一些乱码 - 这就是导致解析器抛出异常的那个。

这可能是什么原因?什么是开始进一步调试的好点?

我甚至试图通过使用特定的编码调用getBytes() - 但无济于事。

1 个答案:

答案 0 :(得分:0)

run-app运行grails应用程序并允许从资源重新加载

run-war生成war文件并运行war文件,因此不会重新加载资源。

您可以手动执行grails war,然后在tomcat的本地实例上运行它。