2013-11-25 98 views
0

我有一個服務,我建立\使用返回的數據在下面的格式。HTTPBuilder,返回JSON格式不正確

def responseData = [ 
'results': results, 
'status': results ? "OK" : "Nothing present" 
] 

render(responseData as JSON) 

輸出看起來像這樣,我已經根據提琴手

{ 「結果」 驗證輸出:[{ 「類」:「com.companyName.srm.ods.territory.Apo 」, 「ID」:2, 「apoId」: 「5T9B0」}], 「狀態」: 「OK」}

這是一個簡單的POST調用與來自搜索參數的身體。

使用HTTPBuilder我得到不同的結果

http.request(groovyx.net.http.Method.POST, groovyx.net.http.ContentType.URLENC) {req -> 
     uri.path = restUrl 
     body = requestData 
     response.success = {resp, json -> 
      println resp.statusLine.statusCode 
      println resp.statusLine 
      def slurper = new JsonSlurper() 
      String s = json.toString() 
      println s 
      returnJson = slurper.parseText(s) 
     } 
     response."422" = {resp, json -> 
      println ${resp.statusLine} 
     } 
     response.failure = {resp -> 
      println ${resp.statusLine} 
     } 
    } 

[ 「成果」:[{ 「類」: 「com.companyName.srm.ods.territory.Apo」, 「ID」:2 「apoId」:「5T9B0」}],「狀態」:「OK」:空]

這變成了映射對,其中鍵是JSON和值是空值,這是令人困惑的,以HTTPBuilder爲什麼這樣做。

爲了解析到JSON,我有以下附加編碼 S = s.replace( ':空]', '') S = s.replace( '[', '')

這對於這種類型的實現似乎過於複雜。 我已經轉入調試,沒有什麼有趣的是來自於此。 任何想法

回答

0

我用生成器0.7.1,並得到JSON響應接下來方式:

http.request(Method.POST, ContentType.TEXT) { 
      uri.path = pathToService   
      headers.'User' = user 
      headers.Accept = 'application/json' 
      body = requestBody //here I post some json 

      response.success = { resp, reader -> 

       //println reader.text; 
       println "response status: ${resp.statusLine}" 
       return = reader.text 
      } 

      response.failure = { resp, reader -> 
       println "Request failed with status ${resp.status}" 
       reader.responseData.results.each { 
       println " ${it.titleNoFormatting} : ${it.visibleUrl}" 
       } 
      } 
     } 
+0

剛剛意識到問題的日期:)無論如何,我希望這將有助於其他人。 – olyv