groovy - Another issue when trying to POST JSON to REST URL via HttpBuilder -


i read this , several other postings on , elsewhere how send post call via httpbuilder json data content. problem none of solutions working!

my problem different. i have existing json data in file. when attempt send rest interface curl:

curl -x post -u "username:password" -d @/path/to/myfile.json http://localhost:8080/path/here --header "content-type:application/json" 

all works well. here @ (some code in there, read on):

def myfile = new file('/path/to/myfile.json') if (!myfile.exists()) println "error!  not have json file!"  def convertedtext = myfile.text.replaceall('\\{', '[') convertedtext = convertedtext.replaceall('\\}', ']')   def jsonbldr = new jsonbuilder() jsonbldr myfile.text  println jsonbldr.tostring()  def myclient = new groovyx.net.http.httpbuilder('http://username:password@localhost:8080/my/path') myclient.setheaders(accept: 'application/json')  results = myclient.request(post, json) { req ->     body = [ jsonbldr.tostring() ]     requestcontenttype = json     response.success = { resp, reader ->         println "success! ${resp.statusline}"     }      response.failure = { resp ->         println "failure! ${resp.properties}"     } } 

this results in 'failure' closure data:

statusline:http/1.1 400 exception evaluating property 'id' java.util.arraylist, reason: groovy.lang.missingpropertyexception: no such property: id class: java.lang.string 

fwiw, there no "id" in json anywhere. if change "body" line "[ jsonbldr.tostring() ]" "[ convertedtext ]" - why code there, same error. if take out brackets on body, error stating body not data array (as map).

can (far groovier i) tell me %%$#@ doing wrong???

you need jsonslurper instead of jsonbuilder. after implementation like:

def myfile = new file('/path/to/myfile.json') if (!myfile.exists()) println "error!  not have json file!"  def bodymap = new jsonslurper().parsetext(myfile.text)  def myclient = new groovyx.net.http.httpbuilder('http://username:password@localhost:8080/my/path') modelclient.setheaders(accept: 'application/json')  results = myclient.request(post, json) { req ->     requestcontenttype = json     body = bodymap     response.success = { resp, reader ->         println "success! ${resp.statusline}"     }      response.failure = { resp ->         println "failure! ${resp.properties}"     } } 

however, not clear difference between myfile , modelfile in code.


Comments

Popular posts from this blog

plot - Remove Objects from Legend When You Have Also Used Fit, Matlab -

java - Why does my date parsing return a weird date? -

Need help in packaging app using TideSDK on Windows -