I am trying to understand the Simplified GET of HTTP Builder. I succeeded with simple GET request similar to a REST GET request.
def client = new HTTPBuilder('http://pokeapi.co')
def resp = client.get(path: '/api/v1/pokemon/1')
static void main(String[] args){
def h = new HTTP()
print h.resp.name
}
What I am trying to do next is adding parameters to the query.
def client = new HTTPBuilder('http://svcs.sandbox.ebay.com')
def resp = client.get(path: '/services/search/FindingService/v1',
contentType: TEXT,
query:[
'SECURITY-APPNAME': APP_ID,
'OPERATION-NAME':'findItemsByKeywords',
'SERVICE_VERSION':'1.0.0',
'RESPONSE-DATA-FORMAT':'JSON',
'callback':'_cb_findItemsByKeywords',
'REST-PAYLOAD': '',
'keywords':'iphone 3g',
'paginationInput.entriesPerPage': '3'])
}
When I print resp
, I get:
java.io.StringReader@16d871c0
Is the code for the parameters correct? Also what is wrong with my output?
My query (when I run it through the browser) produces
{"findItemsByKeywordsResponse":[{"ack":["Success"],"version":["1.13.0"],"timestamp":["2014-12-02T06:26:15.869Z"],"searchResult":[{"@count":"3","item":[{"itemId":["110089183401"],"title":["Apple iPhone 3G - 8GB - Black (Unlocked) Smartphone"],"globalId":["EBAY-US"],"primaryCategory":[{"categoryId":["9355"],"categoryName":["Cell Phones & Smartphones"]}],"galleryURL":["http://thumbs2.sandbox.ebaystatic.com/m/mI_iSJ1zmYlidmuoLh9Pndw/140.jpg"],"viewItemURL":["http://cgi.sandbox.ebay.com/Apple-iPhone-3G-8GB-Black-Unlocked-Smartphone-/110089183401"],"productId":[{"@type":"ReferenceID","__value__":"100014203"}],"paymentMethod":["PayPal"],"autoPay":["false"],"postalCode":["95125"],"location":["San Jose,CA,USA"],"country":["US"],"shippingInfo":[{"shippingServiceCost":[{"@currencyId":"USD","__value__":"2.5"}],"shippingType":["Flat"],"shipToLocations":["US"],"expeditedShipping":["false"],"oneDayShippingAvailable":["false"],"handlingTime":["3"]}],"sellingStatus":[{"currentPrice":[{"@currencyId":"USD","__value__":"100.0"}],"convertedCurrentPrice":[{"@currencyId":"USD","__value__":"100.0"}],"sellingState":["Active"],"timeLeft":["P25DT9H19M59S"]}],"listingInfo":[{"bestOfferEnabled":["false"],"buyItNowAvailable":["false"],"startTime":["2011-05-17T15:41:14.000Z"],"endTime":["2014-12-27T15:46:14.000Z"],"listingType":["FixedPrice"],"gift":["false"]}],"returnsAccepted":["true"],"condition":[{"conditionId":["1000"],"conditionDisplayName":["New"]}],"isMultiVariationListing":["false"],"topRatedListing":["false"]},{"itemId":["110116107959"],"title":["Apple iPhone 3G - 8GB - Black (AT&T) Smartphone (MB046LL/A)"],"globalId":["EBAY-US"],"primaryCategory":[{"categoryId":["9355"],"categoryName":["Cell Phones & Smartphones"]}],"galleryURL":["http://thumbs4.sandbox.ebaystatic.com/m/mEcUS_FQToCpPxHhT12xHvw/140.jpg"],"viewItemURL":["http://cgi.sandbox.ebay.com/Apple-iPhone-3G-8GB-Black-AT-T-Smartphone-MB046LL-A-/110116107959"],"productId":[{"@type":"ReferenceID","__value__":"101892398"}],"paymentMethod":["PayPal"],"autoPay":["false"],"postalCode":["98102"],"location":["Seattle,WA,USA"],"country":["US"],"shippingInfo":[{"shippingServiceCost":[{"@currencyId":"USD","__value__":"0.0"}],"shippingType":["Free"],"shipToLocations":["US"],"expeditedShipping":["false"],"oneDayShippingAvailable":["false"],"handlingTime":["1"]}],"sellingStatus":[{"currentPrice":[{"@currencyId":"USD","__value__":"149.99"}],"convertedCurrentPrice":[{"@currencyId":"USD","__value__":"149.99"}],"sellingState":["Active"],"timeLeft":["P26DT22H10M10S"]}],"listingInfo":[{"bestOfferEnabled":["false"],"buyItNowAvailable":["false"],"startTime":["2013-05-08T04:31:25.000Z"],"endTime":["2014-12-29T04:36:25.000Z"],"listingType":["FixedPrice"],"gift":["false"]}],"returnsAccepted":["true"],"condition":[{"conditionId":["1000"],"conditionDisplayName":["New"]}],"isMultiVariationListing":["false"],"topRatedListing":["false"]},{"itemId":["110089171954"],"title":["Apple iPhone 3G - 8GB - Black (Unlocked) Smartphone"],"globalId":["EBAY-US"],"primaryCategory":[{"categoryId":["9355"],"categoryName":["Cell Phones & Smartphones"]}],"galleryURL":["http://thumbs3.sandbox.ebaystatic.com/m/m7btqoH-DYL3EWRCDJgThJg/140.jpg"],"viewItemURL":["http://cgi.sandbox.ebay.com/Apple-iPhone-3G-8GB-Black-Unlocked-Smartphone-/110089171954"],"productId":[{"@type":"ReferenceID","__value__":"100014203"}],"paymentMethod":["PayPal"],"autoPay":["false"],"postalCode":["95125"],"location":["San Jose,CA,USA"],"country":["US"],"shippingInfo":[{"shippingServiceCost":[{"@currencyId":"USD","__value__":"2.5"}],"shippingType":["Flat"],"shipToLocations":["US"],"expeditedShipping":["false"],"oneDayShippingAvailable":["false"],"handlingTime":["3"]}],"sellingStatus":[{"currentPrice":[{"@currencyId":"USD","__value__":"100.0"}],"convertedCurrentPrice":[{"@currencyId":"USD","__value__":"100.0"}],"sellingState":["Active"],"timeLeft":["P24DT9H2M20S"]}],"listingInfo":[{"bestOfferEnabled":["false"],"buyItNowAvailable":["false"],"startTime":["2011-05-16T15:23:35.000Z"],"endTime":["2014-12-26T15:28:35.000Z"],"listingType":["FixedPrice"],"gift":["false"]}],"returnsAccepted":["true"],"condition":[{"conditionId":["1000"],"conditionDisplayName":["New"]}],"isMultiVariationListing":["false"],"topRatedListing":["false"]}]}],"paginationOutput":[{"pageNumber":["1"],"entriesPerPage":["3"],"totalPages":["564"],"totalEntries":["1691"]}],"itemSearchURL":["http://shop.sandbox.ebay.com/i.html?_nkw=iphone+3g&_ddo=1&_ipg=3&_pgn=1"]}]}
2
Answers
Fixed it. contentType is not
TEXT
.You can set ContentType to TEXT and it works. Indeed you receive a java.io.StringReader which you can transform to a String.
More options regarding the transformation from StringReader to String here: How do I convert a StringReader to a String?
Important! By setting the ContentType to TEXT, the GET method will return exactly the retrieved content. If you set the ContentType to JSON the GET method will parse the JSON response automatically to a LazyMap which is not always what you want.