Frage

Ich bin neu zu stark mit und haben damit begonnen, es zu verwenden, um einige REST-Services zu testen. Ich habe ein Problem Parsen meine XML-Antwort von unserem Dienst aufgrund ‚Content nicht in Prolog erlaubt.‘ Nach einer Weile der Suche stieß ich auf einen Beitrag sagen, es könnte ein Byte Order Marker am Anfang sein. Um dies zu kompensieren ich ihren Ansatz folgte das Zeichen vor dem ersten

Mit HTTPBuilder, ist es eine Möglichkeit, chunked Antworten zu handhaben, ohne Buchstaben aus zu Trimmen? Wenn ich versuche:

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

Ich werde die ‚Content nicht in Prolog Nachricht erlaubt. Allerdings:

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

Arbeiten, erfordert aber den Text bis zum ersten Besatz

War es hilfreich?

Lösung

Ich hatte das gleiche Problem, wenn ich mit einem IIS-Server kommunizieren benötigt. Die XML lieferte ein falsches Zeichen vor dem eigentlichen XML hat vom Web-Server zurückgegeben. Ich arbeitete um es wie folgt aus:

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

Andere Tipps

Die HTTPBuilder Klasse hat eine setContentEncoding () -Methode, die Sie die Antwort des Inhaltstyp angeben können.

Vielleicht so etwas wie:

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

Hope, das hilft.

Ich habe dieses Problem auch einen IIS-Server über https zu schlagen. Hier ist ein wenig neben Wim Deblauwe Antwort auf eine Anfrage POST. Sie haben eine andere Art der Anfrage zu senden, als Sie in der Antwort erwarten.

Senden Sie eine POST mit XML als Anfragetyp und TEXT als Antworttyp. Dann analysieren den Text Antwort in XML. Das funktioniert für mich.

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));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top