Note that there are some explanatory texts on larger screens.

plurals
  1. POMissingPropertyException on Clickatell API in grails
    primarykey
    data
    text
    <p>I am working on a Web App on grails and I am using Clickatell as the Web API. I have these codes on an SMSNotifier.groovy class. Yet, I encounter the MissingPropertyException</p> <blockquote> <p>groovy.lang.MissingPropertyException: No such property: POST for class: utils.SMSNotifier at utils.SMSNotifier.sendClickatellSms(SMSNotifier.groovy:54)</p> </blockquote> <p>The codes which is inside the SMSNotifier class which has errors, are the following:</p> <pre><code> def sendClickatellSms(def number, def text) { def http = new HTTPBuilder('http://api.clickatell.com/') http.contentType = TEXT EncoderRegistry encoders = new EncoderRegistry(); encoders.setCharset('ISO-8859-1') http.setEncoderRegistry(encoders) http.request( POST ) { uri.path = 'http://sendmsg' requestContentType = URLENC if (number.substring(0, 1) == '+') { // Remove a leading plus sign number = number.substring(1) } body = [ api_id: '3442677', user: 'iTech013', password: '', from: '+639277705918', to: number, text: text, concat: '3', callback: '2', deliv_ack: '1' ] response.success = { resp, reader -&gt; def msg = reader.text if (msg.substring(0, 2) == 'ID') { return 0 } else if (msg.substring(0, 3) == 'ERR') { log.error("Clickatell " + msg) return msg.substring(5, .toInteger() } else { return 1 } } response.failure = { resp -&gt; log.error("Failed to contact Clickatell: ${resp.statusLine}") return 1 } } } </code></pre> <p>The SMSNotifier.groovy file:</p> <pre><code>package utils import org.itech.klinikav2.domain.Patient import org.itech.klinikav2.enums.NotificationType; import groovyx.net.http.EncoderRegistry import groovyx.net.http.HTTPBuilder import static groovyx.net.http.Method.GET import static groovyx.net.http.ContentType.TEXT import grails.persistence.Event /** * @author Randy * */ class SMSNotifier { //this method is to send a message with a patient parameter and message public static String chooseMessage(NotificationType notifType, Patient patient) { def message= "Greetings! You will have a follow-up appointment tomorrow." def doctor= "Doctor: " def time= "Time: " def p=patient if (notifType.equals(NotificationType.FOLLOW_UP_APPOINTMENT)) { message= "Greetings! You will have a follow-up appointment tomorrow." return message } else if (notifType.equals(NotificationType.BALANCE)) { message= "Greetings! Just reminding you of your balance for appointment payment." return message } } def sendToList(ArrayList&lt;Patient&gt; patients, NotificationType notifType) { def patientList= patients for (int i=0; i&lt; patientList.size(); i++) { def patient = patientList.get(i) def message = chooseMessage(notifType, patient) sendClickatellSms(patient.mobileNumber, message) } } def sendClickatellSms(def number, def text) { def http = new HTTPBuilder('http://api.clickatell.com/') http.contentType = TEXT EncoderRegistry encoders = new EncoderRegistry(); encoders.setCharset('ISO-8859-1') http.setEncoderRegistry(encoders) http.request(POST) { uri.path = 'http://sendmsg' requestContentType = URLENC if (number.substring(0, 1) == '+') { // Remove a leading plus sign number = number.substring(1) } body = [ api_id: '3442677', user: 'iTech013', password: 'ingenium123..', from: '+639277705918', to: number, text: text, concat: '3', callback: '2', deliv_ack: '1' ] response.success = { resp, reader -&gt; def msg = reader.text if (msg.substring(0, 2) == 'ID') { return 0 } else if (msg.substring(0, 3) == 'ERR') { log.error("Clickatell " + msg) return msg.substring(5, .toInteger() } else { return 1 } } response.failure = { resp -&gt; log.error("Failed to contact Clickatell: ${resp.statusLine}") return 1 } } } } </code></pre> <p>I called this method through the index() method of a Controller class. These are the codes: </p> <pre><code> def index() { def sms = new SMSNotifier() def result= sms.sendClickatellSms("09277705918", "Hi!") if(result==1) { render "success" } else{ render "sorry" } } </code></pre> <p>I left the password space blank, but i put the actual password on my actual codes.</p> <p>I think the answer is simple, I am just starting with APIs so, every bit of knowledge and help on this matter is highly appreciated! Thank you in advance! :)</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload