我在通过PHP / Soap连接到web服务的linux服务器上。
问题是一种方法是通过SharpZipLib压缩响应。所以我得到的只是一个乱码。
有没有人知道用PHP或JS解压缩的方法?
谢谢!
更新
这是返回的压缩测试数据:
UEsDBC0AAAAIAI5TWz3XB / ZI ////////// 8EABQAZGF0YQEAEADWAgAAAAAAABYBAAAAAAAAfZLvToNAEMTnUXyDatXEDxcS / 3zxizH6BBVESaESKFHf3t + cOWgtNhcuYXd2Zndug570qjdV6rVVpxV3pQ9tlCnohv + ab6Mc1J0G7kynZBb / 5IKeYTDLAGOm28hVwtmpobqItfuYACpp1Ki42jobOGqO1eYRIXI2egHfofeOTqt7OE6o8QQdmbnpjMm01JXOdcG5ZKplVDpeEeBr6LCir2umKaJCj3ZSbGPEE3 + NSD / 57fADtfYhoRtwZqmJ / C3Z + bmaHl9Kzq6CX20bWRJzjvMNbtjZ71Fvtdfz2RjPY / 2ESy54ExJjC6P78U74XYudOaw2gPUOTSyfRDut9cjLmGma2 // 24TBTwj85573zDhziFkc29wdQSwECLQAtAAAACACOU1s91wf84v ////////// BAAUAAAAAAAAAAAAAAAAAAAAZGF0YQEAEADWAgAAAAAAABYBAAAAAAAAUEsFBgAAAAABAAEARgAAAEwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA =
答案 0 :(得分:2)
有可能,它正在使用gzip。您应该查看PHP Zlib和gzdecode或gzdeflate方法。您可能需要查看内容类型标头或其他响应标头。
您可以尝试的是在Web服务请求中设置Accept标头,告知服务您不知道如何处理压缩。如果这是一项适当的服务,它将履行请求。
编辑查看.pdf,他们将数据作为zip存档发送 - 因此您需要找到一个处理内存zip存档的PHP库。他们用来解码它的C#代码非常简单 - 它们只读取存档中的所有条目并展开它们。您可以尝试使用PHP wrapper和PHP 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;
}