【发布时间】:2019-01-02 07:13:40
【问题描述】:
有没有办法在 Angular-CLI 中从使用 MTOM 的 SOAP Web 服务实现文件下载请求?
乍一看,它似乎应该被支持并且实现起来非常简单(在服务器端它非常简单),但是在谷歌搜索了一个多星期之后,我们想出了大 ZIP。
毕竟,它只是一个多部分消息(对于如何在 Angular 中进行管理,它不会产生任何有用的 Google Hits),第一部分是 soapEnvelope(我们需要对其进行解析以获得某些信息)和二进制文件数据第二部分..就像这样..
--uuid:554fa566-3182-4242-b6c8-c9495056135c
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body><ns2:downloadResponse xmlns:ns2="http://ws.XXX.XXX.XX/">
<return><errorCode>0</errorCode><document><xop:Include
xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:caf7b6bc-d351-
465b-8d83-7094e6cf20ad-6@cxf.apache.org"/></document></return>
</ns2:downloadResponse></soap:Body></soap:Envelope>
--uuid:554fa566-3182-4242-b6c8-c9495056135c
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <caf7b6bc-d351-465b-8d83-7094e6cf20ad-6@cxf.apache.org>
Content-Disposition: attachment;name="xxx.doc"
..BINARY DATA HERE..
这是从我们的服务器发送到客户端的信息的真实示例。名称已更改以保护无辜者。
我们收到它时在 POST 中指定了 responseType:'blob',令人惊讶的是,PDF 将显示所有这些无关紧要的废话.. WORD、EXCEL 和其他所有内容都会包含上面看到的内容。 Angular(最好是在 Chrome 中进行调试)确实有足够的来自 blob 的信息来将响应键入为“多部分/相关”。这来自哪里以及如何处理它是一个谜。
谷歌的人真的必须有一个简单的解决方案。任何接受者?
是的,我们已经在 SOAP 信封中考虑过 base64 编码,但我们必须考虑可能非常大(数百 MB)的文档,而且这似乎是一个非首发。
在这件事上的任何帮助将不胜感激。
【问题讨论】:
标签: angular file download mtom