我正在使用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使用登录插件时创建的cookie。
现在,当我使用run-app运行此程序时,没有任何问题。但是,当使用run-war运行它时,当JSON解析器尝试从String创建JSON对象时,将引发异常。
Caused by: org.codehaus.groovy.grails.web.json.JSONException: Expected a ',' or '}' at character 304 of {"algorithm":"HMAC-SHA256","code":"AQCvjV......."user_id":...50089"\00\00
如果在run-app的上下文中运行,则进一步调试它,似乎是从解码调用创建的String很好。但是,当运行结束后,字符串的最后一个字符不是'}',而是一些乱码-这是导致解析器引发异常的一个字符。
这可能是什么原因?进一步开始调试的好处是什么?
我什至尝试通过使用特定的编码来调用getBytes(),但无济于事。
最佳答案
run-app运行grails应用程序,并允许从资源重新加载
run-war生成war文件并运行war文件,因此无需重新加载资源。
您可以手动进行grails war,然后在tomcat的本地实例上运行它。
关于facebook - Grails:运行 war 和运行应用程序之间的行为差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10248245/