Pregunta

Soy nuevo en el uso maravilloso y han comenzado a utilizarlo para probar algunos servicios REST. Estoy teniendo un problema al analizar mi respuesta XML de nuestro servicio debido a "contenido no permitido en el prólogo. Después de buscar un rato me encontré con un post diciendo que podría ser un marcador de orden de bytes al principio. Para compensar Seguí su enfoque para recortar los caracteres antes de la primera

El uso de HTTPBuilder, hay una manera de manejar las respuestas troceadas sin recortar caracteres fuera? Si trato:

def http = new HTTPBuilder('url')
http.request( Method.valueOf("GET"), XML )

Me sale el 'contenido no permitido en el mensaje de prólogo. Sin embargo:

http.request( Method.valueOf("GET"), TEXT )

Las obras, sino que requiere recortar el texto hasta el primer

¿Fue útil?

Solución

Yo tenía el mismo problema cuando se necesitaba para interactuar con un servidor IIS. El XML devuelto tenía un carácter falso frente a la actual XML devuelto por el servidor web. Trabajé alrededor de él como esto:

StringReader reader = builder.get( path: 'rcserver/systeminfo.xml', contentType: ContentType.TEXT )
def text = reader.getText()
def xml = new XmlSlurper().parseText(text.substring(1));

Otros consejos

La clase HTTPBuilder tiene un setContentEncoding () que le permite especificar tipo de contenido de la respuesta.

Tal vez algo como:

http.contentEncoding = ContentEncoding.Type.GZIP
http.request( Method.GET, XML)

Espero que esto ayude.

Yo estaba teniendo este problema también lanzó un servidor IIS a través de HTTPS. He aquí una pequeña adición a la respuesta de Wim Deblauwe para una solicitud POST. Usted tiene que enviar un tipo diferente en la solicitud de lo esperado en la respuesta.

Enviar un post con XML como el tipo de solicitud y el texto como el tipo de respuesta. A continuación, analizar la respuesta de texto en XML. Esto funcionó para mí.

En Groovy:

def reader = http.request(Method.POST, ContentType.TEXT){
    uri.path = "myPath.api"
    send ContentType.XML, postBodyXml
}
def text = reader.getText()
def resultxml = new XmlSlurper().parseText(text.substring(1));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top