groovy post to a url
Published:
If you’ve ever worked with the brilliant Recaptcha service, you’ll know that their REST API requires an HTTP POST rather than a GET. As I had only used GET requests thus far, I googled around and found a pretty easy solution:
private def evaluateCaptcha(def remoteIp, def challenge, def response) {
def config = recaptchaService.getRecaptchaConfig()
def urlString = "http://api-verify.recaptcha.net/verify"
def queryString = "privatekey=${config.recaptcha.privateKey}&remoteip=${remoteIp}&challenge=${challenge}&response=${URLEncoder.encode(response)}"
def url = new URL(urlString)
def connection = url.openConnection()
connection.setRequestMethod("POST")
connection.doOutput = true
def writer = new OutputStreamWriter(connection.outputStream)
writer.write(queryString)
writer.flush()
writer.close()
connection.connect()
def recaptchaResponse = connection.content.text
log.debug(recaptchaResponse)
recaptchaResponse.startsWith("true")
}
I have to credit Justin Spradlin for the code that ultimately got me here. Consider this a +1.