2013-01-21 67 views
1

我有一個接受帶有JSON主體的POST請求的Grails控制器。在某些請求中,JSON格式不正確,我得到一個JSONException。我如何獲得請求主體文本來記錄或檢查它(我並不總是可以訪問客戶端)? Grails request.JSON已經佔用了流,所以看起來我無法通過request.body訪問它。在JSONException之後讀取請求主體

這裏是我的控制器操作:

def setScore(ScoreCommand scoreCommand) { 
    try { 
     def context = request.JSON.optJSONObject("context") 
     userService.updateContext(context) 
    } catch (ConverterException ce) { 
     log.error("Error parsing JSON") 
     // I want to log the malformed JSON body 
    } 
    def scoreResponse 
    if (!scoreCmd.validate()) { 
     scoreResponse = errorResponse(scoreCommand) 
    } else { 
     def scoreResult = gameService.setScore(scoreCommand) 
     scoreResponse = buildResponse(scoreResult) 
    } 
    render scoreResponse as JSON 
} 
+0

'params.context'? –

+0

它不起作用:(不幸的是,「上下文」是在POST請求的主體中,而不是在參數中。 – chozero

+1

'log.error(「錯誤解析JSON」,ce)'? – Isammoc

回答

0

工作的呢?

def json = request.JSON 

try { 
    def context = json.optJSONObject("context") 
    userService.updateContext(context) 
}catch(e) { 
    log.error json.toString() 
} 
+0

嘗試了它並且沒有。只要我訪問'request.JSON',它就嘗試解析它並拋出異常 – chozero

+0

啊,我想知道是否是錯誤被拋出的時候。 – Gregg

相關問題