Domanda

Sono nuovo di utilizzare Groovy e hanno iniziato ad usarlo per testare alcuni servizi REST. Sto avendo un problema parsing XML mia risposta dal nostro servizio a causa di 'Contenuto non ammessi in Prolog.' Dopo un po 'la ricerca mi sono imbattuto in un post dicendo che ci potrebbe essere un Ordine Marker Byte all'inizio. Per compensare Ho seguito il loro approccio per tagliare i caratteri prima del primo

Utilizzando HTTPBuilder, c'è un modo per gestire le risposte Chunked senza tagliare caratteri off? Se provo:

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

ho la 'Contenuto non ammessi nel messaggio prologo. Tuttavia:

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

Opere, ma richiede il taglio del testo fino alla prima

È stato utile?

Soluzione

Ho avuto lo stesso problema quando ho avuto bisogno di interagire con un server IIS. L'XML restituito aveva un carattere fasullo davanti al XML effettivo restituito dal server web. Ho lavorato in giro in questo modo:

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

Altri suggerimenti

La classe HTTPBuilder ha un setContentEncoding () metodo che consente di specificare tipo di contenuto della risposta.

Forse qualcosa di simile:

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

Spero che questo aiuti.

I stava avendo questo problema e colpendo un server IIS su https. Ecco una piccola aggiunta alla risposta di Wim Deblauwe per una richiesta POST. È necessario inviare un tipo diverso nella richiesta del previsto nella risposta.

Invia un post con XML come il tipo di richiesta e il testo come tipo di risposta. Poi, analizzare la risposta di testo in XML. Questo ha funzionato per me.

In 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));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top