2011-03-20 25 views
2

文檔似乎在插件端以及HTTPBuilder端都缺乏。我試圖通過put方法提交一些json,但它一直告訴我put()不喜歡我餵它的地圖。Grails REST客戶端插件 - PUT正文內容

有沒有人有使用Grails REST客戶端插件的PUT的例子?以下是我已經試過:

withHttp(uri: "http://foo/doo/roo") { 
     def bodyContent = [ 
      pano: jsonText 
     ] 

     def json = put(body: bodyContent) 

     if (json.stat == 'ok') { 
      wsr.success = true 
     } 
} 

錯誤:

No signature of method: com.wbr.pano.PanService.put() is applicable for argument types: (java.util.LinkedHashMap) values: [[body: 
    { 
     "class":"com.wbr.platform.Pano", 
     "errorMessage":"null", 
     "imageSize":0, 
     "id":26, 
     "completed":"2011-03-20 3:50:27.257", 
     "downloading":"2011-03-20 3:49:12.269", 
     "processing":"2011-03-20 3:49:42.911", 
     "uploading":"2011-03-20 3:50:12.107" 
    } 
    ]] 
+0

你可以發佈錯誤消息/ stacktrace你正在得到? – 2011-03-20 20:49:16

+0

添加了錯誤消息。實際的堆棧跟蹤更加神祕。 – Gregg 2011-03-20 21:14:22

回答

6

HTTPBuilder沒有一個方法。嘗試更改並使用http改爲withRest以便您的語句通過RESTClient執行。此外,我認爲默認情況下身體編碼爲URL編碼,因此您可能需要指定requestContentType:groovyx.net.http.ContentType.JSON作爲您的的另一個參數放

import static groovyx.net.http.ContentType.* 

withRest(uri: "http://foo/doo/roo") { 
     def bodyContent = [ 
      pano: jsonText 
     ] 

     def json = put(body: bodyContent, requestContentType: JSON) 

     if (json.status == 200) { 
      wsr.success = true 
     } 
} 
+0

謝謝,我會給它一個鏡頭。 – Gregg 2011-03-21 01:56:06

+0

我已經標記爲正確的,因爲它解決了眼前的問題。即使我們的功能測試正常工作,我仍然遇到了正在進行的json數據和Grails閱讀的問題。但那是另一個問題。 – Gregg 2011-03-21 05:29:52