jQuery ajax SOAP 多部分响应pdf

Posted

技术标签:

【中文标题】jQuery ajax SOAP 多部分响应pdf【英文标题】:jQuery ajax SOAP multipart response pdf 【发布时间】:2012-08-30 08:45:12 【问题描述】:

我正在发送带有data:xmlandContent-Type:text/xml 的jQuery ajax 请求并得到以下响应:

--MIME_boundary
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Content-ID: <SOAP-ENV:Envelope>

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope> .............</SOAP-ENV:Envelope>
--MIME_boundary
Content-Type: application/pdf
Content-Transfer-Encoding: binary

.... pdf binary data .....

据我了解,响应是带有附件的多部分...但是我如何分别提取肥皂部分和 pdf 原始数据部分并使用二进制数据来构建此 pdf?感谢您的帮助。

还要注意这一点:http://www.w3.org/TR/SOAP-attachments#SOAPReferenceToAttachements

更新: 经过一番研究,总结了许多不同的回答,我想到了以下问题和问题:

Ajax - jquery .ajax() 函数 - 仅处理文本/xml 响应,这就是它不处理二进制数据的原因(在某处读取)。但是,如果我得到多部分 -> Content-Type: application/pdf -> 我正在获取其中的二进制数据。 可以将二进制数据转换为 base64,然后使用 html5 数据:-> 但这会带来复杂的问题,即每个浏览器的行为都不同。

现在,我的结论是:

只需发出一个ajax请求,获取URL路径并使用window.location.href直接从服务器下载文件

如果我错了,请纠正:jQuery Ajax 无法处理多部分 MIME 响应??

【问题讨论】:

【参考方案1】:

AJAX 使用 UTF-8 编码,因此它不支持二进制数据传输。您需要对二进制数据进行 Base64 编码,然后在另一端对其进行解码。您需要相应地设置标题。

Content-Transfer-Encoding: base64
Content-Description: somefile.pdf
Content-Disposition: attachment;
filename="somefile.pdf"

....then your Base-64 data blob ...

【讨论】:

感谢您的回答,请记住这一点。但我实际上想知道如何提取肥皂响应的第二部分。因为,使用 jquery .ajax() 函数虽然它给了我上面提到的响应它会产生一个错误 - 可能是因为它无法处理多部分响应? Ajax 不适用于文件传输。

以上是关于jQuery ajax SOAP 多部分响应pdf的主要内容,如果未能解决你的问题,请参考以下文章

jQuery+AJAX 响应头

基于 jQuery AJAX SOAP 的 Web 服务和 CORS(跨源资源共享)[关闭]

对 SOAP Web 服务的 JQuery AJAX 调用 - 访问被拒绝。在 SOAP UI 中工作

windows phone 7 - phonegap 停止 jquery.ajax

当内容类型为“text/xml”时,Axis2 发送多部分响应

我无法从 JQuery ajax 调用中加载部分 Django 模板