3

サーバーから、GZIP圧縮を使用して圧縮されたJSONデータストリームが送信されます。

通常のIEブラウザーでこのデータを要求すると、データが取得され、開くアプリケーションについて言及すると、ブラウザーはそのデータストリームを自動的に解凍し、JSONデータを表示します。

私のCアプリケーションはCOM/OLEを使用してIEブラウザーインスタンスを埋め込み、GET / POST操作にWININETを使用しているので、ここでデータを圧縮します。

デフォルトのIEブラウザの場合にGZIPデータを自動的に解凍するIEブラウザ機能以来、CアプリケーションでWININETを介してデータを自動的に復号化するにはどうすればよいですか?

4

1 に答える 1

5

Vista以降、INTERNET_OPTION_HTTP_DECODINGフラグはWinInet内でgzipデコードを有効にします。

INTERNET_OPTION_HTTP_DECODING

WinINetがgzipおよびdeflateエンコーディングスキームのデコードを実行できるようにします。詳細については、コンテンツエンコーディングを参照してください。

デコードが失敗した場合、アプリケーションには2つのオプションがあります。Accept-Encodingヘッダーを削除してリクエストを再送信するか、リクエストのINTERNET_OPTION_HTTP_DECODINGオプションをfalseに設定してからリクエストを再送信します。デコードオプションがfalseに設定されている場合、アプリケーションはContent-Encodingヘッダーをチェックし、アプリケーションレベルでデコードを実行する必要があります。

以前のバージョンのWindowsでは、自分で解凍する必要がありました(これは、たとえばhttp://zlib.net/を使用してもかなり簡単です) 。

于 2012-08-19T07:02:32.617 に答える