настройка HttpBuilder для моего веб-сервиса - PullRequest
0 голосов
/ 01 марта 2012

Я хочу иметь локально размещенный веб-сервис, который возвращает список объектов UserContact в виде XML по запросу GET на URL http://localhost:8080/csvweb/contacts

У меня есть следующее сопоставление в URLMappings.groovy

    "/contacts/$id"(controller: "contacts", parseRequest: true) {        
        action = [GET: "show", PUT: "update", DELETE: "delete", POST: "save"] 
}

в контактах контактов контроллер действия определяется следующим образом

def show ={
       if (params.id && UserContacts.exists(params.id.toLong())) {
            def p = UserContacts.findById(params.id.toLong())
            render p as XML
        }
        else {
            def all = UserContacts.list()
            render all as XML
        }
    }

Как мне запустить GET-запрос, используя HttpBuilder из Groovy консоли? У меня есть это до сих пор

@Grab( 'org.codehaus.groovy.modules.http-builder:http-builder:0.5.2-SNAPSHOT' )
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.GET

def http = new HTTPBuilder("http://localhost:8080/csvwebservice")

http.handler.failure = { resp, xml ->
    println "it broke ${resp} ${xml}"
}
http.get(path: '/contacts') { resp, xml ->
    if (resp.status == 200) {
        xml?.items.each {UserContacts ->
            println "${UserContacts?.email}"
        }
    } else {
        return [error:"Did not return a proper response: ${resp.status}"]
    }
}

Я всегда получаю эту ошибку

groovyx.net.http.HTTPBuilder parseResponse
WARNING: Could not parse content-type: Response does not have a content-type header
it broke groovyx.net.http.HttpResponseDecorator@62f6fb59 

Редактировать: после добавления contentType: ContentType.xml я получаю следующее исключение: 29 февраля 2012 г. 14:07:45 groovyx.net.http.ParserRegistry getCharset

WARNING: Could not parse charset from content-type header in response
[Fatal Error] :-1:-1: Premature end of file.
Feb 29, 2012 2:07:45 PM groovyx.net.http.HTTPBuilder doRequest

WARNING: Error parsing 'null' response

org.codehaus.groovy.runtime.InvokerInvocationException: org.xml.sax.SAXParseException: Premature end of file.

    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:95)

    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)

    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
 .....

Edit2: ответ от веб-службы от веб-браузера

<list>
<userContacts id="1">
<company id="1"/>
<email>jonas.sultani@flintstones.com</email>
<fax>+49 6245 95535</fax>
<firstName>Jonas Sultani</firstName>
<lastName/>
<phone>+49 6245 99555</phone>
<prefix>Mr</prefix>
<title>Consultant</title>
</userContacts>
<userContacts id="2"><company id="2"/><email>james.simmons@airplanes.com</email><fax/><firstName>James H</firstName><lastName>Simmons</lastName><phone>+1 112-434-6684</phone><prefix>Mr</prefix><title>AP Lead</title>
</userContacts>
<userContacts id="3"><company id="3"/><email>slmarino@bowringer</email><fax/><firstName>Stephanie</firstName><lastName>Marino</lastName><phone>+1 650-544-5444</phone><prefix>Mrs</prefix><title>Project Manager</title>
</userContacts>
</list>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...