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を使用しています。PHPZlibgzdecodeまたはgzdeflateメソッドを調べる必要があります。おそらく、コンテンツタイプヘッダーまたは別の応答ヘッダーを確認する必要があります。

試すことができるのは、WebサービスリクエストにAcceptヘッダーを設定して、圧縮の処理方法がわからないことをサービスに通知することです。それが適切なサービスである場合、それは要求を尊重します。

編集.pdfを見ると、データはzipアーカイブとして送信されているため、メモリ内のzipアーカイブを処理するPHPライブラリを見つける必要があります。デコードに使用するC#コードは非常に単純です。アーカイブ内のすべてのエントリを読み取り、展開するだけです。PHPZipと一緒にPHPラッパーを使用してメモリバッファに保存してみることができます。

圧縮を要求しないAcceptヘッダーを設定してみましたか?

于 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 に答える