r - Using RCurl postForm to gather JSON data -


i trying extract time series data bls api using rcurl.

the bls supplies following sample code command line extraction:

curl -i -x post -h 'content-type: application/json'       -d '{"seriesid":["leu0254555900", "apu0000701111"],         "startyear":"2002", "endyear":"2012"}'          http://api.bls.gov/publicapi/v1/timeseries/data/  

i have confirmed specified files (i.e. series ids) both present following both yield json formatted object:

require(rcurl) bls.content_test1 <- geturlcontent("http://api.bls.gov/publicapi/v1/timeseries/data/leu0254555900") bls.content_test2 <- geturlcontent("http://api.bls.gov/publicapi/v1/timeseries/data/apu0000701111") 

based on variety of posts rcurl tag (and post in particular), have ported command line script following chunk of code:

require(rjsonio)  jsonbody <- tojson(list("seriesid"=paste('"["cfu0000008000"', '[leu0254555900"]"')                         ,"startyear"="2012"                         ,"endyear"="2013"))  httpheader <- c(accept="application/json; charset=utf-8",                 "content-type"="application/json")  bls.content <- postform("http://api.bls.gov/publicapi/v1/timeseries/data/"                         ,.opts=list(httpheader=httpheader                                     ,postfields=jsonbody)) 

which yields:

[1] "{\"status\":\"request_failed\",\"responsetime\":0,\"message\":[\"your request has failed, please check input parameters , try request again.\"],\"results\":null}" attr(,"content-type")                               charset  "application/json"            "utf-8" 

does appear problem implementation of rcurl or appear problem bls api?

it's problem way creating json body. version if cat(jsonbody) get

{  "seriesid": "\"[\"cfu0000008000\" [leu0254555900\"]\"", "startyear": "2012", "endyear": "2013" } 

which has escapes , brackets in there. it's not correct. instead try

jsonbody <- tojson(list("seriesid"=c("cfu0000008000", "leu0254555900"),                         startyear="2012",                         endyear="2013")) 

which gives

{  "seriesid": [ "cfu0000008000", "leu0254555900" ], "startyear": "2012", "endyear": "2013"  } 

which valid json. changing part , using rest of code had gives me request_succeeded message.


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -