Pregunta

Tengo una aplicación Flex que necesita para tomar datos de informes de un JasperReports servidor , a través de la Servicios Web JasperReports Server API . Flex Builder 3 hace un buen trabajo de generar el código de consumo de servicios web, con una excepción. Si usted pide una lista de directorio o una contabilidad de los parámetros del informe, JR servidor devuelve llanura XML en el de SOAP envoltorio y Flex lo analiza bien. Sin embargo, si usted solicita un informe en sí, ya sea en XML o PDF formato, se vuelve como una de varias partes MIME mensaje con alguna descriptiva < em> XML como la primera parte y el informe - incluso si el informe en sí es XML - como la segunda parte. Flex no sabe qué hacer con los mensajes de varias partes y simplemente se queja de no válido XML .

Esto es una muestra de la respuesta. Mi estrategia actual es hacer un poco de análisis de cadenas y manejar los bits de forma individual. Pero, ¿ Flex tiene ningún métodos incorporados para manejar esta situación? (No he podido encontrar ninguna.)

------=_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äâ
¿Fue útil?

Solución

Lo que voy a decir es sólo lo que yo creo: Puedo estar equivocado, ya que no he intentado hacer esto

.

No creo que usted tiene muchas opciones. Flex HTTPService (o lo que sea que esté utilizando) sólo puede ofrecer tantos (/ o tan pocos) los formatos de datos. Ver aquí . Para cualquier corriente a medida que tendrá que recuperarlo como un object y pasarlo a través de su propio decodificador. Parece que Flex no hace ningún análisis sintáctico del mensaje MIME sino que depende de (que es también cómo se comportan los navegadores normalmente) el servidor para identificar el contenido que se está transmitiendo. Si el servidor sólo envía un archivo de texto pero cambia el tipo de contenido que decir audio/mpeg creo que va a tener el mismo problema. Incluso cuando Flex hace saber caliente para manejar texto.

Si alguna vez se puede obtener en torno a hacer este experimento (con archivos de texto como de vídeo tipo MIME o lo que usted se imagina) No vamos a saber.

Mientras tanto, se puede echar un vistazo a SerializationFilter y seguir y añadir un nuevo tipo MIME para PDF!

Con suerte, la vida será un poco más fácil con Flex 4 y el HTTPMultiService .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top