0

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

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

有谁知道用 PHP 或 JS 解压的方法?

谢谢!

更新:

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

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

4

2 回答 2

2

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

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

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

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

于 2010-10-28T22:30:56.873 回答
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;
}
于 2014-04-24T14:50:17.520 回答