在php或JS中解压缩SharpZipLib字符串?

时间:2010-10-28 22:18:27

标签: c# php javascript .net sharpziplib

我在通过PHP / Soap连接到web服务的linux服务器上。

问题是一种方法是通过SharpZipLib压缩响应。所以我得到的只是一个乱码。

有没有人知道用PHP或JS解压缩的方法?

谢谢!

更新

这是返回的压缩测试数据:

  

UEsDBC0AAAAIAI5TWz3XB / ZI ////////// 8EABQAZGF0YQEAEADWAgAAAAAAABYBAAAAAAAAfZLvToNAEMTnUXyDatXEDxcS / 3zxizH6BBVESaESKFHf3t + cOWgtNhcuYXd2Zndug570qjdV6rVVpxV3pQ9tlCnohv + ab6Mc1J0G7kynZBb / 5IKeYTDLAGOm28hVwtmpobqItfuYACpp1Ki42jobOGqO1eYRIXI2egHfofeOTqt7OE6o8QQdmbnpjMm01JXOdcG5ZKplVDpeEeBr6LCir2umKaJCj3ZSbGPEE3 + NSD / 57fADtfYhoRtwZqmJ / C3Z + bmaHl9Kzq6CX20bWRJzjvMNbtjZ71Fvtdfz2RjPY / 2ESy54ExJjC6P78U74XYudOaw2gPUOTSyfRDut9cjLmGma2 // 24TBTwj85573zDhziFkc29wdQSwECLQAtAAAACACOU1s91wf84v ////////// BAAUAAAAAAAAAAAAAAAAAAAAZGF0YQEAEADWAgAAAAAAABYBAAAAAAAAUEsFBgAAAAABAAEARgAAAEwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA =

2 个答案:

答案 0 :(得分:2)

有可能,它正在使用gzip。您应该查看PHP Zlibgzdecodegzdeflate方法。您可能需要查看内容类型标头或其他响应标头。

您可以尝试的是在Web服务请求中设置Accept标头,告知服务您不知道如何处理压缩。如果这是一项适当的服务,它将履行请求。

编辑查看.pdf,他们将数据作为zip存档发送 - 因此您需要找到一个处理内存zip存档的PHP库。他们用来解码它的C#代码非常简单 - 它们只读取存档中的所有条目并展开它们。您可以尝试使用PHP wrapperPHP Zip将其存储在内存缓冲区中。

您是否尝试设置一个要求不压缩的Accept Header?

答案 1 :(得分:1)

您可以使用以下功能解压缩字符串:

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;
}