Разархивировать строку SharpZipLib в php или JS? - PullRequest
0 голосов
/ 29 октября 2010

Я нахожусь на сервере Linux, подключающемся к веб-сервису через PHP / Soap.

Проблема в том, что метод архивирует ответ через SharpZipLib.Так что все, что я получаю взамен - искаженная строка.

Кто-нибудь знает способ распаковать это с помощью PHP или JS?

Спасибо!

Обновление:

Это сжатые данные теста, которые получаютвернулся:

UEsDBC0AAAAIAI5TWz3XB / цзы ////////// 8EABQAZGF0YQEAEADWAgAAAAAAABYBAAAAAAAAfZLvToNAEMTnUXyDatXEDxcS / 3zxizH6BBVESaESKFHf3t + cOWgtNhcuYXd2Zndug570qjdV6rVVpxV3pQ9tlCnohv + ab6Mc1J0G7kynZBb / 5IKeYTDLAGOm28hVwtmpobqItfuYACpp1Ki42jobOGqO1eYRIXI2egHfofeOTqt7OE6o8QQdmbnpjMm01JXOdcG5ZKplVDpeEeBr6LCir2umKaJCj3ZSbGPEE3 + Nsd / 57fADtfYhoRtwZqmJ / c3Z + bmaHl9Kzq6CX20bWRJzjvMNbtjZ71Fvtdfz2RjPY / 2ESy54ExJjC6P78U74XYudOaw2gPUOTSyfRDut9cjLmGma2 // 24TBTwj85573zDhziFkc29wdQSwECLQAtAAAACACOU1s91wf84v ////////// BAAUAAAAAAAAAAAAAAAAAAAAZGF0YQEAEADWAgAAAAAAABYBAAAAAAAAUEsFBgAAAAABAAEARgAAAEwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA =

1015 *

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Скорее всего, он использует gzip. Вы должны изучить PHP Zlib и gzdecode или gzdeflate . Возможно, вам придется взглянуть на заголовок типа контента или другой заголовок ответа.

Вы можете также попробовать установить заголовок Accept в запросе веб-службы, который сообщает службе, что вы не знаете, как бороться со сжатием. Если это правильный сервис, он выполнит запрос.

РЕДАКТИРОВАТЬ Глядя на .pdf, они отправляют данные в виде zip-архива, поэтому вам нужно найти PHP-библиотеку, которая работает в zip-архивах памяти. Код C #, который они используют для декодирования, довольно прост - они просто читают все записи в архиве и расширяют их. Вы можете попытаться сохранить его как буфер в памяти, используя PHP-оболочку вместе с PHP Zip .

Вы пытались установить заголовок Accept, который не требует сжатия?

1 голос
/ 24 апреля 2014

Вы можете разархивировать строку, используя такую ​​функцию:

function decode($data)
{
    $filename = tempnam('/tmp', 'tempfile');
    file_put_contents($filename, base64_decode($data));

    $zip = zip_open($filename);
    $entry = zip_read($zip);

    $decoded = zip_entry_read($entry);

    zip_entry_close($entry);
    zip_close($zip);

    return $decoded;
}
...