jQuery ajax SOAP multipart响应pdf

时间:2012-09-05 15:20:07

标签: jquery ajax soap mime multipart

我正在使用data:xmlContent-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 .....

据我所知,响应是带有附件的多部分...但是我如何单独提取soap部分和pdf原始数据部分并使用二进制数据来构建此pdf? Thanx任何帮助。

另请注意:http://www.w3.org/TR/SOAP-attachments#SOAPReferenceToAttachements

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

  • Ajax - jquery .ajax()函数 - 只处理text / xml响应,这就是为什么它不处理二进制数据(在某处读取)。但如果我得到多部分 - &gt;内容类型:application / pdf - &gt;我在其中获取二进制数据。
  • 二进制数据可以转换为base64,然后使用html5数据: - &gt;但这有一个复杂的问题,每个浏览器的行为都不同。

现在,我的结论是:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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