When using Ruby, there are many options for what client to use. The one demonstrated below uses the rest-client gem.
#!/usr/bin/env ruby #************************************************* # Copyright (c) 2012 Cisco Systems, Inc. # All rights reserved. #************************************************** require "rubygems" require 'rest_client' require 'json' $base_uri = 'https://my_server/webacs/api/v3/' $clients ='data/ClientDetails' $user, $pass = 'user', 'password' # wrap resource access class PagedResource def initialize(url, extraQuery, user, password,ps) # query additions eg.. .sort=xx&ssdsd .. don't need encoding... @resource = RestClient::Resource.new url, :user => user, :password => password @options = {:accept => 'application/json' }; @extra = URI.encode(extraQuery); @pagesize=ps; end def getPage(start) query = URI.encode('?.full=true&.firstResult='+ start.to_s+ '&.maxResults=' +@pagesize.to_s) + '&'+@extra; puts "Query: " + query; res = @resource[query].get @options if (res.code != 200) raise "Bad response received:",res.to_str exit end last_res = JSON.parse(res) return last_res; end def getComplete() resList =[]; start = Time.new partial = getPage(0); count = partial['queryResponse']['@count'].to_i; last = partial['queryResponse']['@last'].to_i; if (count == 0) puts ("Read 0 records") return resList; end rumble resList, partial # puts(JSON.pretty_generate(partial)) while last<count-1 do partial = getPage(last+1); last = partial['queryResponse']['@last'].to_i; rumble resList, partial end finish = Time.new puts ("Read "+resList.length.to_s+" records") puts ('Took: '+(finish-start).to_i.round().to_s+' seconds') return resList; end private def rumble(resA,partial) partial['queryResponse']['entity'].each do | ent| dto = ent['@dtoType'] resA.push(ent[dto]) end end end clientRes = PagedResource.new $base_uri + $clients,"",$user, $pass, 1000; clients = clientRes.getComplete(); puts(JSON.pretty_generate(clients[0]))