Flex でマルチパート SOAP 応答を解析しますか?
-
09-09-2019 - |
質問
私は持っています フレックス レポート データを取得する必要があるアプリケーション JasperReportsサーバー, 、 を通って JasperReports サーバー Web サービス API. フレックスビルダー3 は、1 つの例外を除いて、Web サービス消費コードを生成するという優れた仕事をします。ディレクトリ リストまたはレポート パラメータの説明を要求する場合は、 JRサーバー プレーンを返します XML の中に 石鹸 ラッパーと フレックス うまく解析します。ただし、報告そのものを求める場合は、 XML または PDF フォーマットすると、マルチパートとして返されます マイム 何らかの説明を含むメッセージ XML 最初の部分とレポートとして -- たとえレポート自体が XML -- 第 2 部として。 フレックス マルチパートメッセージをどうすればよいのかわからず、単に無効であると文句を言うだけです XML.
応答のサンプルを次に示します。私の現在の戦略は、文字列の解析を行ってビットを個別に管理することです。しかし、そうします フレックス これを処理する組み込みメソッドはありますか?(何も見つかりませんでした。)
------=_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äâ
解決
これから言うことは私が信じていることだけです。試していないので間違っているかもしれません。
あまり選択肢はないと思います。Flex HTTPService (または使用しているもの) が提供できるデータ形式は限られています (または非常に少ない)。見る ここ. 。カスタム ストリームの場合は、それを object
そしてそれを独自のデコーダに渡します。Flex は MIME メッセージの解析を行わず、送信されるコンテンツの識別をサーバーに依存しているようです (これはブラウザの通常の動作でもあります)。サーバーがテキスト ファイルのみを送信するが、コンテンツ タイプを次のように変更する場合 audio/mpeg
あなたも同じ問題を抱えていると思います。Flex がテキストを処理するのが得意である場合でも。
この実験 (MIME タイプのビデオなどのテキスト ファイルを使用するなど) を実行できる場合は、ぜひお知らせください。
その間、以下をご覧ください。 シリアル化フィルター 次に、PDF の新しい MIME タイプを追加します。
Flex 4 と HTTPマルチサービス.