2015-10-07 107 views
0

我在集成Nexmo插件的Grails中遇到错误。当错误发生,该文件是 'NexmoService.groovy' 如下:Grails&Nexmo插件

package grails.plugin.nexmo 

import groovyx.net.http.HTTPBuilder 
import org.springframework.context.i18n.LocaleContextHolder as LCH 

import static groovyx.net.http.ContentType.URLENC 
import static groovyx.net.http.Method.POST 

class NexmoService { 

    def grailsApplication 
    def messageSource 

    def sendSms(String to, String text, String from=config?.sms?.default_from) throws NexmoException { 
     if (!to || !text || !from) { 
      throw new NexmoException(getMessage("nexmo.sms.error.missing.param")) 
     } 

     def http = new HTTPBuilder(config?.endpoint) 
     def requestBody = [to: to, text: text, from: from, api_key: config?.api?.key, api_secret: config?.api?.secret] 

     http.request(POST) { 
      uri.path = "/sms/${config?.format}" 
      send(URLENC, requestBody) 

      response.success = { resp, data -> 
       def message = data?.messages[0] 
       def statusCode = message?.status 
       if (statusCode != "0") { 
        def error = getMessage("nexmo.sms.status.${statusCode}", [message?."error-text"], getMessage("nexmo.sms.error.default")) 
        throw new NexmoException(error) 
       } 
       log.info(getMessage("nexmo.sms.success")) 
       return [status: message?.status, id: message?."message-id"] 
      } 
      response.failure = { resp, data -> 
       def error = getMessage("nexmo.sms.error.response", [resp?.status], getMessage("nexmo.sms.error.default")) 
       throw new NexmoException(error) 
      } 
     } 
    } 

    def call(String to, String text, String from="") throws NexmoException { 
     if (!to || !text) { 
      throw new NexmoException(getMessage("nexmo.call.error.missing.param")) 
     } 

     def http = new HTTPBuilder(config?.endpoint) 
     def requestBody = [to: to, text: text, from: from, api_key: config?.api?.key, api_secret: config?.api?.secret] 

     http.request(POST) { 
      uri.path = "/tts/${config?.format}" 
      send(URLENC, requestBody) 

      response.success = { resp, data -> 
       def statusCode = data?.status 
       if (statusCode != "0") { 
        def error = getMessage("nexmo.call.status.${statusCode}", [data?."error-text"], getMessage("nexmo.call.error.default")) 
        throw new NexmoException(error) 
       } 
       log.info(getMessage("nexmo.call.success")) 
       return [status: data?.status, id: data?."call-id"] 
      } 
      response.failure = { resp, data -> 
       def error = getMessage("nexmo.call.error.response", [resp?.status], getMessage("nexmo.call.error.default")) 
       throw new NexmoException(error) 
      } 
     } 
    } 

    private ConfigObject getConfig() { 
     return grailsApplication.config?.nexmo 
    } 

    private String getMessage(String code, List args=[], String defaultMessage="") { 
     if (messageSource.resolveCode(code, LCH.locale)) { 
      return messageSource.getMessage(code, args.toArray(), LCH.locale) 
     } 
     return defaultMessage 
    } 
} 

的错误是如下:

| Error Compilation error: startup failed: C:\nexmo-master\grails-app\services\grails\plugin\nexmo\NexmoService.groovy: 3: unable to resolve class groovyx.net.http.HTTPBuilder @ line 3, column 1. import groovyx.net.http.HTTPBuilder ^

C:\nexmo-master\grails-app\services\grails\plugin\nexmo\NexmoService.groovy: 6: unable to resolve class groovyx.net.http.ContentType @ line 6, column 1. import static groovyx.net.http.ContentType.URLENC ^

C:\nexmo-master\grails-app\services\grails\plugin\nexmo\NexmoService.groovy: 7: unable to resolve class groovyx.net.http.Method @ line 7, column 1. import static groovyx.net.http.Method.POST ^

3 errors

+0

看来你没有得到HTTPBuilder,这是需要和包括在Nexmo插件。也许Nexmo插件与当前的Grails版本过时了吗?您可以尝试通过将REST插件包含到您的构建配置中来包含它。 – wwwclaes

回答