2012-08-19 50 views
0

我的服務器處理gzip壓縮送給我這是使用gzip壓縮壓縮的JSON數據流。使用WININET API的

當我要求對正常的IE瀏覽器的這個數據,我得到的數據,當我提到的應用與打開,瀏覽器會自動解壓縮數據流,並顯示了我JSON數據。

我的C應用程序使用COM/OLE中嵌入IE瀏覽器實例,我使用GET/POST操作WININET所以在這裏我得到壓縮的數據。

由於其IE瀏覽器功能在默認IE瀏覽器的情況下自動解壓縮GZIP數據 如何在C應用程序中通過WININET自動解密數據?

回答

2

開始Vista中,INTERNET_OPTION_HTTP_DECODING標誌使gzip的解碼的WinInet內:

INTERNET_OPTION_HTTP_DECODING

的WinINet啓用以執行對解碼的gzip和放氣編碼方案。有關更多信息,請參閱Content Encoding

解碼失敗時,應用程序有兩個選項:它可以刪除Accept-Encoding標頭並重新發送請求,或者它可以將請求上的INTERNET_OPTION_HTTP_DECODING選項設置爲false,然後重新發送請求。如果解碼選項設置爲假時,應用程序必須檢查Content-Encoding頭和在應用程序級別執行任何解碼。

在Windows的早期版本中,你將不得不解自己(這也是相當容易使用如http://zlib.net/

+0

'Internet Explorer的7'在'WinXP'。如何發生的呢解壓'GZIP'數據? – nimish 2012-08-19 15:03:29

+1

它可能已經添加了IE7。重點在於一些XP可能還沒有可用(如果你出於任何原因目標是所有XP)。和IE7已經包含在Vista http://en.wikipedia.org/wiki/Internet_Explorer#OS_compatibility – 2012-08-19 15:10:45

+0

由於我與SP 2及以上針對Windows XP。將嘗試一下。 – nimish 2012-08-19 15:44:28