Как получить с помощью Content-Id вложения многочастного ответа с помощью PHP CURL - PullRequest
0 голосов
/ 21 июля 2011

Я не могу понять, как эффективно получить конкретную часть многочастного HTTP-ответа. Я пытаюсь получить отчет в формате PDF с сервера Jasper Reports, отправив SOAP через PHPCURL, и я не нашел в документации 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

Ответы [ 2 ]

0 голосов
/ 22 июля 2011

Я изменил маленькое решение Шефа так:

$pattern =  "/report>\r\n\r\n/";
$matches = preg_split($pattern, $output);
file_put_contents('c:/report.pdf', $matches[1]);

И оно работает сейчас.Спасибо, Шеф.

0 голосов
/ 21 июля 2011

Попробуйте:

<?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];
?>

Однако я не ручаюсь за его надежность, потому что структура возвращаемой строки может измениться в любое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...