我无法弄清楚如何有效地获得多部分http响应的特定部分。 我试图通过PHPCURL发送SOAP从Jasper Reports服务器获取PDF报告,我没有在CURL文档中找到如何处理多部分响应。 我想在下面的“报告”部分RAW回复。 谢谢你的帮助。 伊利亚斯
------=_Part_6_9317140.1311257231623
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <B33D7700BFCF12CC2A64A7F6FB84CEAE
sutffs here
------=_Part_6_9317140.1311257231623
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-Id: <**report**>
binary PDF content here
答案 0 :(得分:0)
试试这个:
<?php
$str = '------=_Part_6_9317140.1311257231623
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <B33D7700BFCF12CC2A64A7F6FB84CEAE
sutffs here
------=_Part_6_9317140.1311257231623
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-Id: <**report**>
binary PDF content here';
$pattern = '%Content-Type: application/pdf'."\n".
'Content-Transfer-Encoding: binary'."\n".
'Content-Id: ([^\s]+)%';
preg_match($pattern, $str, $matches);
echo $matches[1];
?>
但是,我不保证其可靠性,因为返回字符串的结构可能随时发生变化。
答案 1 :(得分:0)
我修改了一个像Shef这样的小解决方案:
$pattern = "/report>\r\n\r\n/";
$matches = preg_split($pattern, $output);
file_put_contents('c:/report.pdf', $matches[1]);
它现在有效。谢谢Shef。