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

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

 更新時(shí)間: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ì),需要的朋友可以參考下

報(bào)錯(cuò)起因:

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

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

報(bào)錯(cuò)信息如下:

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)

排查過程:

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

<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請(qǐng)求外部接口的時(shí)候,有時(shí)候,可能存在網(wǎng)絡(luò)抖動(dòng),后者過于頻繁的請(qǐng)求接口,導(dǎo)致接口偶發(fā)性的出現(xiàn)504網(wǎng)絡(luò)異常。導(dǎo)致自己需要查找的數(shù)據(jù)沒有查找到,或者解析出來。

最終解決辦法:

通過重試機(jī)制,三次延時(shí)調(diào)用接口,提高對(duì)調(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("=============第{}次等待{}秒后重新請(qǐng)求接口=============", 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    一篇文章帶你入門Java封裝

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

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

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

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

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

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

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

    Java 多線程實(shí)例詳解(三)

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

    SpringMVC中的http Caching的具體使用

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

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

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

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

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

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

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

最新評(píng)論

平湖市| 长白| 林口县| 商城县| 洛隆县| 双流县| 那曲县| 长泰县| 宁津县| 禄丰县| 茶陵县| 申扎县| 游戏| 北票市| 濉溪县| 珲春市| 洛隆县| 温泉县| 临泽县| 汪清县| 汾西县| 自治县| 衡南县| 嘉兴市| 亳州市| 遂川县| 桦甸市| 玛曲县| 石楼县| 嘉兴市| 河西区| 北海市| 湖州市| 虹口区| 宜昌市| 老河口市| 平利县| 兴隆县| 淳安县| 浦城县| 绥芬河市|