我正在使用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() - 但无济于事。
答案 0 :(得分:0)
run-app运行grails应用程序并允许从资源重新加载
run-war生成war文件并运行war文件,因此不会重新加载资源。
您可以手动执行grails war,然后在tomcat的本地实例上运行它。