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

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

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

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

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

GPT給我的答案

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

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

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

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

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

> 5. 代碼存在bug。你的解壓代碼可能存在bug,導(dǎo)致無法正常讀取GZIP格式??梢詫Ρ裙俜綄?shí)現(xiàn),檢查代碼是否存在問題。

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

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

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

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

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

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

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

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

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

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

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

>   問:如果響應(yīng)頭中缺少Content-Encoding會導(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í),會發(fā)現(xiàn)內(nèi)容并非有效的gzip編碼格式,就報(bào)Not in GZIP format的錯(cuò)誤。

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

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

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

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

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

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

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

通過它的解答,我開始懷疑是對接方的問題,于是乎,第二天上班找到對面負(fù)責(zé)人進(jìn)行禮貌問候,不出五分鐘,真的非???,那邊答復(fù):好了

我(已黑化):?。?/p>

白加班了。。。

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    基于spring同名bean覆蓋問題的解決

    這篇文章主要介紹了spring同名bean覆蓋問題的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(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ò)問題解決方案

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

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

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

    這篇文章主要為大家詳細(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,通過在請求頭中傳遞Token,后端可以驗(yàn)證其合法性,從而提高安全性
    2025-01-01
  • Java 通過AQS實(shí)現(xiàn)數(shù)據(jù)組織

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

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

    SpringBoot中的@ApiModelProperty注解作用

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

最新評論