Domanda

Ho un'applicazione Flex che ha bisogno di afferrare i dati di reporting da un JasperReports Server , attraverso il Web Services JasperReports Server API . Flex Builder 3 fa un bel lavoro di generare il codice di servizi web di consumo, con una sola eccezione. Se chiedete un elenco di directory o di un resoconto di parametri del report, JR Server restituisce pianura XML nella SOAP involucro e Flex lo analizza bene. Tuttavia, se chiedete un report stesso, sia in XML o PDF formato, ritorna come un multipart MIME messaggio con un po 'descrittiva < em> XML come la prima parte e il rapporto - anche se la relazione stessa è XML - come la seconda parte. Flex non sa cosa fare con i messaggi in più ed appena si lamenta non valida XML .

Ecco un esempio della risposta. La mia strategia attuale è fare un po 'di analisi di stringa e gestire i bit singolarmente. Ma Flex ha qualunque metodi built-in per gestire questo? (Sono stato in grado di trovare qualsiasi.)

------=_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äâ
È stato utile?

Soluzione

Quello che sto per dire è solo ciò in cui credo: I può essere sbagliato dal momento che non ho provato questo fuori

.

Non credo di avere molta scelta. Flex HTTPService (o qualsiasi altra cosa che si sta utilizzando) può offrire solo un certo numero (/ o così pochi) formati di dati. Vedere qui . Per qualsiasi flusso personalizzato si dovrà recuperare come un object e farla passare attraverso il proprio decoder. Sembra che Flex non fa alcuna analisi del messaggio MIME, ma dipende (che è anche come i browser si comportano in genere) al server di identificare il contenuto che viene trasmesso. Se il server invia solo un file di testo, ma cambia il tipo di contenuto per dire audio/mpeg penso che si avrà lo stesso problema. Anche quando Flex fa sapere a caldo per gestire il testo.

Se mai può andare in giro a fare questo esperimento (con i file di testo come tipo MIME video o qualunque cosa si immagina) Fateci sapere.

Nel frattempo, è possibile dare un'occhiata a SerializationFilter e andare avanti e aggiungere un nuovo tipo MIME per PDF!

Si spera, la vita sarà un po 'facile con Flex 4 e la HTTPMultiService .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top