欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決java.util.zip.ZipException: Not in GZIP format報(bào)錯(cuò)問(wèn)題

 更新時(shí)間:2023年12月21日 10:18:11   作者:李治鴻  
這篇文章主要介紹了解決java.util.zip.ZipException: Not in GZIP format報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java.util.zip.ZipException: Not in GZIP format報(bào)錯(cuò)

最近在對(duì)接第三方接口時(shí)遇到了一個(gè)報(bào)錯(cuò),java.util.zip.ZipException: Not in GZIP format,因?yàn)楣驹谕菩惺褂肎PT提高開(kāi)發(fā)效率,所以我遇事不決先問(wèn)GPT

GPT給我的答案

java.util.zip.ZipException: Not in GZIP format 的報(bào)錯(cuò)一般是由以下幾個(gè)原因?qū)е碌模?/p>

> 1. 壓縮文件格式不正確。也就是說(shuō),你試圖解壓一個(gè)不是GZIP格式的文件。確保要解壓的文件確實(shí)使用GZIP格式進(jìn)行壓縮。

> 2. 文件內(nèi)容已損壞。有可能壓縮時(shí)引入了錯(cuò)誤,或在傳輸過(guò)程中文件被篡改了。導(dǎo)致文件內(nèi)容已經(jīng)損壞,無(wú)法正常解壓。

> 3. 編碼格式不匹配。GZIP格式只支持部分編碼,如果壓縮時(shí)使用了不支持的編碼,也可能導(dǎo)致解壓失敗。

> 4. Java 版本不匹配。GZIP格式在不同的Java版本中實(shí)現(xiàn)可能有差異,如果壓縮時(shí)使用的是另一個(gè)Java版本,也可能解壓失敗。

> 5. 代碼存在bug。你的解壓代碼可能存在bug,導(dǎo)致無(wú)法正常讀取GZIP格式??梢詫?duì)比官方實(shí)現(xiàn),檢查代碼是否存在問(wèn)題。

為了解決這個(gè)報(bào)錯(cuò),你可以分別檢查以下幾點(diǎn):

> 1. 檢查原壓縮文件的確使用GZIP格式。如使用zip -d查看壓縮格式。

> 2. 使用文件校驗(yàn)器 檢查壓縮文件是否被篡改。

> 3. 在解壓前使用工具來(lái)檢查文件是否損壞。

> 4. 檢查壓縮和解壓所用的編碼格式是否一致。

> 5. 驗(yàn)證壓縮和解壓所用的Java版本是否匹配。

> 6. 對(duì)比官方GZIP解壓縮代碼,檢查你的解壓縮代碼是否存在bug。

> 7. 將原壓縮文件解壓后再重新壓縮,看是否仍然報(bào)該錯(cuò)。來(lái)排查是否是文件本身的問(wèn)題。 除此之外,還可以嘗試使用其他GZIP庫(kù)來(lái)解壓,或者直接用 unzip命令,看是否仍然報(bào)同樣的錯(cuò)誤。這可以排除代碼方面的問(wèn)題。

嗯,說(shuō)了一大堆有用的廢話,還是自己打斷點(diǎn)吧。

很快啊,我定位到封裝了發(fā)送http請(qǐng)求的方法中,在其中有一個(gè)解析相應(yīng)數(shù)據(jù)的方法EntityUtils.toString(response.getEntity(), "utf-8");

因?yàn)楸救碎喿x源碼的能力不強(qiáng),在這就不贅述底層邏輯了,總之就是這行報(bào)錯(cuò)了,一開(kāi)始覺(jué)得是我請(qǐng)求頭的問(wèn)題,改了又改,無(wú)果,通過(guò)各種套路GPT得到了以下回答:

>   問(wèn):如果響應(yīng)頭中缺少Content-Encoding會(huì)導(dǎo)致Not in GZIP format報(bào)錯(cuò)嗎

>   答:是的。如果響應(yīng)主體確實(shí)使用了gzip編碼,但響應(yīng)頭卻缺少Content-Encoding字段,這很容易導(dǎo)致Not in GZIP format的錯(cuò)誤。 具體的原因是: 由于缺少Content-Encoding字段,客戶端不知道響應(yīng)使用了gzip編碼。

> 嘗試使用gzip解碼器解碼主體內(nèi)容時(shí),會(huì)發(fā)現(xiàn)內(nèi)容并非有效的gzip編碼格式,就報(bào)Not in GZIP format的錯(cuò)誤。

> 所以如果響應(yīng)確實(shí)使用了gzip編碼,Content-Encoding字段就非常重要:

> - 沒(méi)有Content-Encoding字段,客戶端無(wú)法意識(shí)到響應(yīng)使用了gzip編碼

> - 嘗試使用gzip解碼器解碼主體內(nèi)容時(shí),會(huì)報(bào)Not in GZIP format錯(cuò)誤 相反,如果響應(yīng)主體內(nèi)容沒(méi)有使用gzip編碼,那么缺少Content-Encoding字段就不會(huì)報(bào)這個(gè)錯(cuò)。

> 所以,為了解決這個(gè)問(wèn)題,關(guān)鍵在于確保:

> 1. 響應(yīng)主體是否確實(shí)使用了gzip編碼

> 2. 響應(yīng)頭正確加入Content-Encoding: gzip字段

> 3. 然后使用gzip解碼器來(lái)解碼主體內(nèi)容 只有響應(yīng)主體確實(shí)使用gzip編碼、但響應(yīng)頭又缺少Content-Encoding字段的情況下, 才會(huì)導(dǎo)致Not in GZIP format錯(cuò)誤。 只有當(dāng)響應(yīng)真正不是gzip編碼的時(shí)候,這個(gè)錯(cuò)誤才不會(huì)出現(xiàn)。

通過(guò)它的解答,我開(kāi)始懷疑是對(duì)接方的問(wèn)題,于是乎,第二天上班找到對(duì)面負(fù)責(zé)人進(jìn)行禮貌問(wèn)候,不出五分鐘,真的非??欤沁叴饛?fù):好了

我(已黑化):???

白加班了。。。

由于是小公司沒(méi)什么話語(yǔ)權(quán),對(duì)接方還是上游,所以沒(méi)有仔細(xì)問(wèn)原因,但是我覺(jué)得大概率是響應(yīng)頭的問(wèn)題,如果大家有別的看法可以學(xué)術(shù)討論下。

其實(shí)這次問(wèn)題并沒(méi)有涉及到什么技術(shù)問(wèn)題,只是溝通存在問(wèn)題,這種情況我在開(kāi)發(fā)時(shí)也遇到很多次了,所以寫(xiě)代碼的同時(shí)也要注意及時(shí)溝通,遇到不明白的問(wèn)題問(wèn)同事,問(wèn)對(duì)接方,自己悶著是解決不了問(wèn)題的,問(wèn)問(wèn)問(wèn),問(wèn)到明白為止、問(wèn)到問(wèn)題解決為止。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實(shí)現(xiàn)百度云文字識(shí)別接口代碼

    java實(shí)現(xiàn)百度云文字識(shí)別接口代碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)百度云文字識(shí)別的接口代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 使用ElasticSearch6.0快速實(shí)現(xiàn)全文搜索功能的示例代碼

    使用ElasticSearch6.0快速實(shí)現(xiàn)全文搜索功能的示例代碼

    本篇文章主要介紹了使用ElasticSearch6.0快速實(shí)現(xiàn)全文搜索功能,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Java中使用開(kāi)源庫(kù)JSoup解析HTML文件實(shí)例

    Java中使用開(kāi)源庫(kù)JSoup解析HTML文件實(shí)例

    這篇文章主要介紹了Java中使用開(kāi)源庫(kù)JSoup解析HTML文件實(shí)例,Jsoup是一個(gè)開(kāi)源的Java庫(kù),它可以用于處理實(shí)際應(yīng)用中的HTML,比如常見(jiàn)的HTML格式化就可以用它來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2014-09-09
  • 基于spring同名bean覆蓋問(wèn)題的解決

    基于spring同名bean覆蓋問(wèn)題的解決

    這篇文章主要介紹了spring同名bean覆蓋問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring MVC 中獲取session的幾種方法(小結(jié))

    Spring MVC 中獲取session的幾種方法(小結(jié))

    這篇文章主要介紹了Spring MVC 中獲取session的幾種方法(小結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Mybatis批量修改時(shí)出現(xiàn)報(bào)錯(cuò)問(wèn)題解決方案

    Mybatis批量修改時(shí)出現(xiàn)報(bào)錯(cuò)問(wèn)題解決方案

    這篇文章主要介紹了Mybatis批量修改時(shí)出現(xiàn)報(bào)錯(cuò)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java模擬qq軟件的詳細(xì)過(guò)程

    Java模擬qq軟件的詳細(xì)過(guò)程

    這篇文章主要為大家詳細(xì)介紹了用Java實(shí)現(xiàn)模擬QQ,實(shí)現(xiàn)了消息通信+登陸界面美化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot如何集成Token

    SpringBoot如何集成Token

    文章介紹了如何使用jjwt插件實(shí)現(xiàn)Token的生成和校驗(yàn),該插件可以直接與SpringBoot集成,Token由三部分組成,分別是header、payload和signature,通過(guò)在請(qǐng)求頭中傳遞Token,后端可以驗(yàn)證其合法性,從而提高安全性
    2025-01-01
  • Java 通過(guò)AQS實(shí)現(xiàn)數(shù)據(jù)組織

    Java 通過(guò)AQS實(shí)現(xiàn)數(shù)據(jù)組織

    這篇文章主要介紹了通過(guò)AQS實(shí)現(xiàn)數(shù)據(jù)組織,想了解AQS的同學(xué)可以參考下
    2021-04-04
  • SpringBoot中的@ApiModelProperty注解作用

    SpringBoot中的@ApiModelProperty注解作用

    這篇文章主要介紹了SpringBoot中的@ApiModelProperty注解作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01

最新評(píng)論