2016-05-13 38 views
0

我想通過ws-lite調用一個REST API。獲得工作很好,但調用一個JSON負載不工作的帖子。一個小白github上的而是從位指出維基我不知道https://github.com/jwagenleitner/groovy-wsliteGroovy ws-lite REST post with json payload

@Grab('com.github.groovy-wslite:groovy-wslite:1.1.2') 
import wslite.rest.* 
import groovy.json.JsonBuilder 
def client = new RESTClient("https://d.la10.salesforceliveagent.com/chat/rest") 
def response = client.get(path:'/System/SessionId', headers:['X-LIVEAGENT- API-VERSION':'36','X-LIVEAGENT-AFFINITY':'null']) 

def skey = response.json.key 
def sid = response.json.id 
def stoken = response.json.affinityToken 


client.post(path:'/Chasitor/ChasitorInit', headers:['X-LIVEAGENT-API-VERSION':'36','X-LIVEAGENT-SESSION-KEY':skey,'X-LIVEAGENT-AFFINITY':stoken,'X-LIVEAGENT-SEQUENCE':'1']) 
{ 
    type ContentType.application/json 
     json { 
      "organizationId": "00D28000000f5N9", 
      "deploymentId": "572280000008R6L", 
      "buttonId": "573D000000000OC", 
      "agentId": "005B0000000F3b2", 
      "doFallback": true, 
      "sessionId": sid, 
      "userAgent": "Lynx/2.8.8", 
      "screenResolution": "2560x1440", 
      "visitorName": "Jon A", 
      "prechatDetails": [],"prechatEntities": [], 
      "receiveQueueUpdates": true, 
      "isPost": true 
     } 
} 

如果任何人有使用通過WS-精簡版與REST後從常規的例子好奇。我只是基於json格式獲得編譯失敗。任何瞭解讚賞

回答

0

post塊內的json方法需要一個Map作爲參數所以下面將工作(根本上改變了牙套括號中):

.... 
.... 
client.post(path:'/Chasitor/ChasitorInit', headers:['X-LIVEAGENT-API-VERSION':'36','X-LIVEAGENT-SESSION-KEY':skey,'X-LIVEAGENT-AFFINITY':stoken,'X-LIVEAGENT-SEQUENCE':'1']) 
{ 
    type ContentType.application/json 
     json ["organizationId": "00D28000000f5N9", 
      "deploymentId": "572280000008R6L", 
      "buttonId": "573D000000000OC", 
      "agentId": "005B0000000F3b2", 
      "doFallback": true, 
      "sessionId": sid, 
      "userAgent": "Lynx/2.8.8", 
      "screenResolution": "2560x1440", 
      "visitorName": "Jon A", 
      "prechatDetails": [],"prechatEntities": [], 
      "receiveQueueUpdates": true, 
      "isPost": true] 
} 

因爲地圖是你的唯一參數也應該能夠省略括號。