1

JasperReports Server Web Services APIを介してJasperReports Serverからレポート データを取得する必要があるFlexアプリケーションがあります。Flex Builder 3は、1 つの例外を除いて、Web サービスの消費コードをうまく生成します。ディレクトリ リストまたはレポート パラメータのアカウンティングを要求すると、JR ServerはSOAPラッパーでプレーンなXMLを返し、 Flexはそれを適切に解析します。ただし、レポート自体を要求すると、XML形式かPDF形式かに関係なく、説明的なXMLを含むマルチパートMIMEメッセージとして返されます。最初の部分とレポート (たとえレポート自体がXMLであっても)が 2 番目の部分です。Flexはマルチパート メッセージをどう処理すればよいか分からず、無効なXMLについて不平を言うだけです。

応答のサンプルを次に示します。私の現在の戦略は、文字列の解析を行い、ビットを個別に管理することです。しかし、Flexにはこれを処理するための組み込みメソッドがありますか? (私は何も見つけることができませんでした。)

------=_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äâ
4

1 に答える 1

1

私が言おうとしているのは、私が信じていることだけです: 私はこれを試していないので、間違っているかもしれません.

あなたにはあまり選択肢がないと思います。Flex HTTPService (または使用しているもの) は、非常に多くの (または非常に少ない) データ形式しか提供できません。ここを参照してください。カスタム ストリームの場合は、 として取得しobject、独自のデコーダを介して渡す必要があります。Flex は MIME メッセージの解析を行わず、送信されているコンテンツを識別するためにサーバーに依存しているように見えます (これはブラウザーの一般的な動作でもあります)。サーバーがテキスト ファイルのみを送信し、コンテンツ タイプを次のように変更するaudio/mpeg場合、同じ問題が発生すると思います。Flex がテキストを処理することを知っている場合でも。

この実験 (テキスト ファイルを MIME タイプのビデオなどで行うなど) を実行できる場合は、お知らせください。

それまでの間、 SerializationFilterを見て、PDF 用の新しい MIME タイプを追加してください。

Flex 4 とHTTPMultiServiceによって生活が少し楽になることを願っています。

于 2009-02-26T18:22:14.070 に答える