J'ai un application Flex qui doit saisir les données de reporting à partir d'un serveur JasperReports , par l'JasperReports API Web Services serveur. Flex Builder 3 fait un bon travail de génération du code de consommation des services Web, à une exception près. Si vous demandez une liste de répertoire ou une enveloppe comptable des paramètres de rapport, JR serveur retourne simple XML dans le SOAP et Flex il parse très bien. Cependant, si vous demandez un rapport lui-même, que ce soit dans XML ou format PDF, il revient en tant que multipart message MIME avec une XML descriptive comme la première partie et le rapport - même si le rapport lui-même est XML - comme la deuxième partie. Flex ne sait pas quoi faire avec des messages en plusieurs parties et se plaint simplement d'invalide XML.Analyse d'une réponse SOAP multipart dans Flex?
Voici un exemple de réponse. Ma stratégie actuelle consiste à faire un peu d'analyse de chaîne et à gérer les bits individuellement. Mais est-ce que Flex a des méthodes intégrées pour gérer cela? (Je suis incapable de trouver.)
------=_Part_2_27050467.1235668849951
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <0F082AF1DAF83B3077B1867B4FC8AAA6>
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:runReportResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://axis2.ws.jasperserver.jaspersoft.com">
<runReportReturn xsi:type="xsd:string"><?xml version="1.0" encoding="UTF-8"?>\n<operationResult version="2.0.1">\n\t<returnCode><![CDATA[0]]></returnCode>\n</operationResult>\n
</runReportReturn>
</ns1:runReportResponse>
</soapenv:Body>
</soapenv:Envelope>
------=_Part_2_27050467.1235668849951
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-Id: <report>
%PDF-1.4\n%âãÏÓ\n1 0 obj <</Filter/FlateDecode/Length 29>>stream\nx+är\ná26S°00S\bIár\rá\näâ