Wie extrahiere ich byte array von soapUI Antwort?
Ich bin testen eines web service mit soapUI. Eine der Antworten sieht wie folgt aus:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getInputConfigFilesResponse xmlns:ns2="http://ws.pdb.ericsson.se/">
<return>UEsDBBQACAAIAO1GNToAAAAAAAAAAAAAAAANAAAAc2NyaXB0cy9lbGxza [...] AATAAAAAAAAAAAAAAAAAAGXAAAbGRhcF9ub2RlX2NvbmZpZ3VyYXRpb24vZ2VuZXJhdGVkX2xkaWZfZmlsZXMvX210YXM0X2N4cDQ0NF9yNF9JbXNtb2JpbGUubGRpZlBLAQIUABQACAAIAO1GNTp8eBuZRAEAABMDAAAmAAAAAAAAAAAAAAAAAKJiAABsZGFwX25vZGVfY29uZmlndXJhdGlvbi9lbGxzaC1jb21tYW5kc1BLBQYAAAAABQAFAIgBAAA6ZAAAAAA=</return>
</ns2:getInputConfigFilesResponse>
</S:Body>
</S:Envelope>
Die Antwort ist ein byte-array, welches darstellen soll, eine zip-Datei. Wie kann ich dies überprüfen?
InformationsquelleAutor carrier | 2009-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwar semantisch korrekt ist, glaube ich, Nathan vorgeschlagene Lösung ist etwas unvollständig.
Ich glaube, er vergaß zu tun Base64 decodieren der extrahierten text vor Schritt 1. Ich würde auch eine Verbesserung, so dass keine menschliche intervention erforderlich ist, durch überprüfen, wird die temporäre Datei mit 3rd-party-ZIP-Dienstprogramme.
Dass würde zu übersetzen, die den Zugriff auf die temporäre ZIP-Datei und überprüfen Sie, ob Sie eine gültige ZIP-Datei. Also, ein Algorithmus für die Umsetzung Ihrer Anforderung wäre:
Inhalt und Base64 Dekodieren
Mit all diesem Sinne, hier ist, wie der ganze Groovy-Skript würde so Aussehen:
Bitte lassen Sie mich wissen, wenn dies für Sie arbeitet, wie es für mich tut. 🙂
Prost!
Shonzilla
p.s. Ich würde vorschlagen, hinzufügen von "ZIP" - tag, um diese Frage so, dass die Leute leichter finden Sie eine Lösung für das handling von Reißverschlüssen von Groovy, das ist hier eingebettet.
InformationsquelleAutor Shonzilla
Du gehst zu haben, um mit einigen groovy.
Edit: Hinzugefügt einige Beispiel-code.
def saveFile = new java.io.File(saveTestDir + "\\testreturn.zip")
FileOutputStream fos = new java.io.FileOutputStream(saveFile);
def zipBytes = context.expand( '${Step#Request#//ns2:getInputConfigFilesResponse[1]/return[1]}' );
fos.write( zipBytes.getBytes() );
fos.flush();
fos.close();
Hinzugefügt Beispielcode
InformationsquelleAutor Nathan