最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body

 更新時間:2024年01月16日 11:04:54   作者:促進(jìn)者  
這篇文章主要給大家介紹了關(guān)于如何解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body的相關(guān)資料,文中將解決的辦法通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

報錯起因:

1、在調(diào)用外部api接口,獲取JSON字符串,通過各種JSON文件轉(zhuǎn)對象的時候發(fā)現(xiàn)報錯。

String post = HttpUtil.post(url, JSONUtil.toJsonStr(params));
JSONObject jsonObject = JSONUtil.parseObj(post);

報錯信息如下:

cn.hutool.json.JSONException: Mismatched hr and body at 164 [character 6 line 6]
    at cn.hutool.json.JSONTokener.syntaxError(JSONTokener.java:413)
    at cn.hutool.json.xml.JSONXMLParser.parse(JSONXMLParser.java:99)
    at cn.hutool.json.xml.JSONXMLParser.parse(JSONXMLParser.java:164)
    at cn.hutool.json.xml.JSONXMLParser.parse(JSONXMLParser.java:164)
    at cn.hutool.json.xml.JSONXMLParser.parse(JSONXMLParser.java:164)
    at cn.hutool.json.xml.JSONXMLParser.parseJSONObject(JSONXMLParser.java:29)
    at cn.hutool.json.XML.toJSONObject(XML.java:101)
    at cn.hutool.json.ObjectMapper.mapFromStr(ObjectMapper.java:216)
    at cn.hutool.json.ObjectMapper.map(ObjectMapper.java:98)
    at cn.hutool.json.JSONObject.<init>(JSONObject.java:210)
    at cn.hutool.json.JSONObject.<init>(JSONObject.java:187)
    at cn.hutool.json.JSONObject.<init>(JSONObject.java:142)
    at cn.hutool.json.JSONObject.<init>(JSONObject.java:125)
    at cn.hutool.json.JSONUtil.parseObj(JSONUtil.java:88)

排查過程:

一開始,我一直以為是因為hutool 工具,或者其他JSON有轉(zhuǎn)換的異常,百度,谷歌很多方案,只提示了問題是xml轉(zhuǎn)body錯誤。
一般這種問題還是要看你轉(zhuǎn)換報錯信息,最好給日志打印出來,后來通過try,catch,以及日志打印異常,最終知道報錯原因:

<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->

總結(jié): 問題出現(xiàn)在http請求外部接口的時候,有時候,可能存在網(wǎng)絡(luò)抖動,后者過于頻繁的請求接口,導(dǎo)致接口偶發(fā)性的出現(xiàn)504網(wǎng)絡(luò)異常。導(dǎo)致自己需要查找的數(shù)據(jù)沒有查找到,或者解析出來。

最終解決辦法:

通過重試機(jī)制,三次延時調(diào)用接口,提高對調(diào)用接口這種偶發(fā)性的問題的解決方案。

		JSONObject jsonObject = null;
        int count = 0;
        while (count < 3) {
            try {
                String post = HttpUtil.post("url", JSONUtil.toJsonStr(params));
                jsonObject = JSONUtil.parseObj(post);
                count = 3;
            } catch (Exception e) {
                log.error("JSON異常:{}", e.getMessage());
                count++;
                try {
                    log.warn("=============第{}次等待{}秒后重新請求接口=============", count, 5 * count);
                    Thread.sleep(5000 * count);
                } catch (InterruptedException interruptedException) {
                    interruptedException.printStackTrace();
                }
            }
        }

總結(jié) 

到此這篇關(guān)于解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException: Mismatched hr and body的文章就介紹到這了,更多相關(guān)Java字符串JSON轉(zhuǎn)換異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring四種依賴注入方式的詳細(xì)介紹

    spring四種依賴注入方式的詳細(xì)介紹

    本篇文章主要介紹了spring四種依賴注入方式的詳細(xì)介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 一篇文章帶你入門Java封裝

    一篇文章帶你入門Java封裝

    Java面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài)。下面對三大特性之一封裝進(jìn)行了總結(jié),需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • java讀取用戶登入退出日志信息上傳服務(wù)端

    java讀取用戶登入退出日志信息上傳服務(wù)端

    這篇文章主要介紹了java讀取用戶登入退出日志信息上傳服務(wù)端的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 深度理解Java中volatile的內(nèi)存語義

    深度理解Java中volatile的內(nèi)存語義

    前面我們已經(jīng)講過了volatile的作用、底層實現(xiàn)與內(nèi)存屏障,下面就總結(jié)一下整個流程,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06
  • idea使用jclasslib插件查看字節(jié)碼

    idea使用jclasslib插件查看字節(jié)碼

    這篇文章主要為大家介紹了idea使用jclasslib插件查看字節(jié)碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Java 多線程實例詳解(三)

    Java 多線程實例詳解(三)

    本文主要介紹 java 線程安全的知識,這里整理了相關(guān)資料及實現(xiàn)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • SpringMVC中的http Caching的具體使用

    SpringMVC中的http Caching的具體使用

    本文主要介紹了SpringMVC中的http Caching的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • springboot log4j2不能打印框架錯誤日志的解決方案

    springboot log4j2不能打印框架錯誤日志的解決方案

    這篇文章主要介紹了springboot log4j2不能打印框架錯誤日志的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java中thread線程start和run的區(qū)別

    java中thread線程start和run的區(qū)別

    這篇文章主要介紹了java中thread線程start和run的區(qū)別,run()是Runnable接口中定義的一個方法,是為了讓客戶程序員在這個方法里寫自己的功能代碼的。直接調(diào)用和普通的類調(diào)用自己的成員方法是沒有任何區(qū)別的
    2014-03-03
  • 深入理解Spring Aop的執(zhí)行順序

    深入理解Spring Aop的執(zhí)行順序

    本文將結(jié)合實例代碼,介紹Spring Aop的執(zhí)行順序,非常具有實用價值,需要的朋友可以參考下
    2021-06-06

最新評論

锡林浩特市| 礼泉县| 旌德县| 西吉县| 永春县| 集安市| 科技| 巴楚县| 花莲县| 临江市| 阿克陶县| 潮安县| 南安市| 深泽县| 米脂县| 吉隆县| 兴业县| 文成县| 油尖旺区| 祁连县| 马尔康县| 池州市| 克拉玛依市| 江川县| 梅河口市| 平阳县| 玉林市| 五寨县| 封丘县| 巴马| 黄石市| 平利县| 遵化市| 青田县| 林周县| 阳泉市| 潢川县| 盐源县| 南皮县| 安化县| 天等县|