We use Groovy has our primary technique to plug in with web services and bring content into our mobile UIs. We picked Groovy for the development speed and for it’s clarity (perhaps beauty) of code that is created – essentially minimal code scaffolding that we get so used to in Java so that what we get down to coding business and application logic.
For a recent project we also used TextAnywhere to receive and send SMSs to people who wanted to interact with our quiz.
As a quick demonstration of why Groovy is so useful I thought I show you the Groovy code that uses this API to send SMSs compared with the (less than elegant) Java example provided by Textanywhere to use their SMS send API.
def conn = new URL(SEND_ENPOINT).openConnection()
conn.requestMethod="POST"
conn.doOutput=true
conn.outputStream.withWriter("ASCII") { writer ->
[
"Billing_Ref":BILLING_REF,
"Body":smsResponse,
"Client_ID":CLIENT_ID,
"Client_Pass":CLIENT_PASS,
"Client_Ref":CLIENT_REF,
"Connection":CONNECTION_ENTERPRISE,
"DestinationEx":MSISDN,
"Originator":ORIGINATOR,
"OType":"0",
"Reply_Type":"0",
"SMS_Type":"0"
].each {
writer.write("&" + URLEncoder.encode(it.key,"UTF-8") +
"=" + URLEncoder.encode(it.value,"UTF-8"))
}
}
sendResult = conn.inputStream.text
You gotta admit – that’s pretty readable and succinct. Read a bit more about Groovy closures and looping if you want learn how this works and get coding Groovy today.

I think you could also create the query string and then write it out in one go.
[
"Billing_Ref": BILLING_REF,
"Body": smsResponse,
"Client_ID": CLIENT_ID,
"Client_Pass": CLIENT_PASS,
"Client_Ref": CLIENT_REF,
"Connection": CONNECTION_ENTERPRISE,
"DestinationEx": MSISDN,
"Originator": ORIGINATOR,
"OType": "0",
"Reply_Type": "0",
"SMS_Type": "0"
].collect { “${URLEncoder.encode(it.key)}=${URLEncoder.encode(it.value)}” }.join(‘&’)
Cheers, that’s a great tip.