Question

Je Flex application qui a besoin de saisir des données de reporting à partir d'un JasperReports serveur , par la JasperReports API serveur Web Services . Flex Builder 3 fait un bon travail de générer le code de la consommation de services Web, à une exception près. Si vous demandez une liste de répertoire ou un comptable des paramètres de rapport, JR serveur retourne simplement XML SOAP wrapper et Flex parse juste bien. Cependant, si vous demandez un rapport lui-même, que ce soit dans XML ou PDF format, il revient comme multipart MIME message avec une description < em> XML comme la première partie et le rapport - même si le rapport lui-même est XML - la deuxième partie. Flex ne sait pas quoi faire avec des messages multipart et juste se plaint pas valide XML .

Voici un exemple de la réponse. Ma stratégie actuelle est effectue une analyse de chaîne et de gérer les bits individuellement. Mais est Flex ont des méthodes intégrées pour gérer cette situation? (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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;operationResult version=&quot;2.0.1&quot;&gt;\n\t&lt;returnCode&gt;&lt;![CDATA[0]]&gt;&lt;/returnCode&gt;\n&lt;/operationResult&gt;\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äâ
Était-ce utile?

La solution

Ce que je vais dire est que ce que je crois: je peux me tromper car je ne l'ai pas essayé ceci

.

Je ne pense pas que vous avez beaucoup de choix. Flex HTTPService (ou tout ce que vous utilisez) ne peut offrir tant de (/ ou si peu) les formats de données. Voir . Pour tout flux personnalisé, vous devrez récupérer comme object et le transmettre à travers votre propre décodeur. Il semble que Flex ne fait aucune analyse syntaxique du message MIME mais dépend (qui est aussi la façon dont les navigateurs se comportent généralement) le serveur pour identifier le contenu qui est transmis. Si le serveur envoie uniquement un fichier texte, mais modifie le type de contenu à dire audio/mpeg je pense que vous aurez le même problème. Même quand Flex ne sait chaud pour manipuler du texte.

Si jamais vous pouvez obtenir le temps de faire cette expérience (avec des fichiers texte comme vidéo de type MIME ou tout ce que vous imagine) ne laissez-nous savoir.

En attendant, vous pouvez jeter un oeil à SerializationFilter et continuer et ajouter un nouveau type MIME pour PDF!

Il faut espérer que la vie sera un peu plus facile avec Flex 4 et le HTTPMultiService .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top