我有一个 柔性 需要从以下位置获取报告数据的应用程序 JasperReports服务器, ,通过 JasperReports 服务器 Web 服务 API. 弹性生成器3 在生成 Web 服务使用代码方面做得很好,但有一个例外。如果您需要目录列表或报告参数的统计, JR服务器 返回纯文本 XML 在里面 肥皂 包装纸和 柔性 解析得很好。但是,如果您要求提供报告本身,无论是在 XML 或者 PDF 格式,它以多部分形式返回 哑剧 带有一些描述性的消息 XML 作为第一部分和报告——即使报告本身是 XML ——作为第二部分。 柔性 不知道如何处理多部分消息,只是抱怨无效 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">&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äâ
有帮助吗?

解决方案

我要说的只是我所相信的:我可能是错的,因为我还没有尝试过。

我认为你没有太多选择。Flex HTTPService(或您正在使用的任何服务)只能提供这么多(/或这么少)的数据格式。看 这里. 。对于任何自定义流,您必须将其检索为 object 并将其传递给您自己的解码器。Flex 似乎不对 MIME 消息进行任何解析,而是依赖(这也是浏览器的典型行为方式)服务器来识别正在传输的内容。如果服务器仅发送文本文件但将内容类型更改为 audio/mpeg 我想你也会遇到同样的问题。即使 Flex 确实知道如何处理文本。

如果您可以抽出时间进行此实验(使用 MIME 类型视频或任何您喜欢的文本文件),请告诉我们。

同时,你可以看看 序列化过滤器 继续为 PDF 添加新的 MIME 类型!

希望 Flex 4 和 HTTP多服务.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top