Question

Je suis nouveau à l'aide groovy et ont commencé à l'utiliser pour tester certains services REST. Je vais avoir un problème analyse ma réponse XML de notre service en raison de « Contenu non autorisé dans Prolog. » Je suis venu chercher après un certain temps dans un poste en disant qu'il pourrait y avoir un ordre d'octet marqueur au début. Pour compenser, je suivais leur approche de couper les caractères avant le premier

Utilisation HTTPBuilder, est-il un moyen de gérer les réponses chunked sans caractères rogner? Si je tente:

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

Je reçois le « Contenu non autorisé dans un message Prolog. Cependant:

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

Travaux, mais il faut couper le texte jusqu'à ce que le premier

Était-ce utile?

La solution

J'ai eu le même problème quand je avais besoin d'interagir avec un serveur IIS. Le code XML retourné avait un caractère faux devant le XML réel renvoyé par le serveur Web. J'ai travaillé autour d'elle comme ceci:

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

Autres conseils

La classe HTTPBuilder a setContentEncoding () qui vous permet de spécifier le type de contenu de la réponse.

Peut-être quelque chose comme:

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

Hope this helps.

J'avais ce problème aussi bien frapper un serveur IIS sur https. Voici un peu plus de la réponse de Wim Deblauwe pour une requête POST. Vous devez envoyer un autre type dans la demande que vous attendez dans la réponse.

Envoyer un POST avec XML comme type de demande et TEXT comme le type de réponse. Ensuite, analyser la réponse de texte en XML. Cela a fonctionné pour moi.

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));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top