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

Java接收text/event-stream格式數(shù)據(jù)的詳細(xì)代碼

 更新時(shí)間:2023年07月20日 11:01:46   作者:明天我來(lái)了  
這篇文章主要介紹了java接收text/event-stream格式數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

java接收text/event-stream格式數(shù)據(jù),并且解決接收HTTPS會(huì)不是流式輸出問(wèn)題

前段時(shí)間因?yàn)橐獙?duì)接語(yǔ)音轉(zhuǎn)文字接口,對(duì)方接口輸出的是text/event-stream返回,返回的是流式輸出,本人在百度找了好久,一直沒有找到關(guān)于怎么接收流式返回的文章,可能很多人不清楚流式輸出指的是什么,流式輸出是和對(duì)方建立一個(gè)長(zhǎng)連接,接口方會(huì)一直不斷的給我們推送數(shù)據(jù),而不用等待對(duì)方接口完全輸出后在把返回值一次性返回。

先貼代碼

get請(qǐng)求

public String getEventStream(String urlStr, HttpServletResponse response) {
        long statr = System.currentTimeMillis();
        log.info("開始請(qǐng)求接口url:{}", urlStr);
        InputStream is = null;
        StringBuffer bu = new StringBuffer();
        try {
            URL url = new URL(urlStr);
            URLConnection conn = url.openConnection();
            is = conn.getInputStream();
            byte[] b = new byte[1024];
            int len = -1;
            long end = System.currentTimeMillis();
            log.info("接口url:{},請(qǐng)求開始流式輸出{}", urlStr, end - statr);
            while ((len = is.read(b)) != -1) {
                String line = new String(b, 0, len, "utf-8");
                // 處理 event stream 數(shù)據(jù)
                response.getWriter().write(line);
                response.getWriter().flush();
                bu.append(line);
            }
        } catch (IOException e) {
            log.error("請(qǐng)求模型接口異常", e);
            throw new BusinessException(ResponseCode.TOPIC_INITIATION_FAILED);
        } finally {
            if (!Objects.isNull(is)) {
                try {
                    //12.關(guān)閉輸入流
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return bu.toString();
    }

這里的urlStr參數(shù)是url加參數(shù),示例:https://baidu.com?text=12345678response是因?yàn)槲倚枰瑯佑昧魇捷敵鑫淖纸o前端,如果你不需要返回給前端,可以不用response參數(shù)。

post請(qǐng)求

public String postEventStream(String urlStr, String json, HttpServletResponse response) {
        long statr = System.currentTimeMillis();
        log.info("開始請(qǐng)求接口url:{},請(qǐng)求參數(shù){}", urlStr,json);
        InputStream is = null;
        //11.讀取輸入流中的返回值
        StringBuffer bu = new StringBuffer();
        try {
            //1.設(shè)置URL
            URL url = new URL(urlStr);
            //2.打開URL連接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //3.設(shè)置請(qǐng)求方式
            conn.setRequestMethod("POST");
            //4.設(shè)置Content-Type
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            //5.設(shè)置Accept
            conn.setRequestProperty("Accept", "text/event-stream");
            //6.設(shè)置DoOutput
            conn.setDoOutput(true);
            //7.設(shè)置DoInput
            conn.setDoInput(true);
            //8.獲取輸出流
            OutputStream os = conn.getOutputStream();
            //9.寫入?yún)?shù)(json格式)
            os.write(json.getBytes("utf-8"));
            os.flush();
            os.close();
            //10.獲取輸入流
            is = conn.getInputStream();
            byte[] bytes = new byte[1024];
            int len = 0;
            long end = System.currentTimeMillis();
            log.info("接口url:{},請(qǐng)求參數(shù){},請(qǐng)求開始流式輸出{}", urlStr,json, end - statr);
            while ((len = is.read(bytes)) != -1) {
                String line = new String(bytes, 0, len, "utf-8");
                response.getWriter().write(line);
                response.getWriter().flush();
                bu.append(line);
            }
        } catch (IOException e) {
            log.error("請(qǐng)求模型接口異常", e);
            throw new BusinessException(ResponseCode.TOPIC_INITIATION_FAILED);
        } finally {
            if (!Objects.isNull(is)) {
                try {
                    //12.關(guān)閉輸入流
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return bu.toString();
    }

第一次寫文章,表達(dá)不好請(qǐng)諒解,這里使用的jdk版本是1.8,如果對(duì)于springboot怎么樣返回給前端流式輸出有疑問(wèn),可以私信問(wèn)我

到此這篇關(guān)于Java接收text/event-stream格式數(shù)據(jù)的詳細(xì)代碼的文章就介紹到這了,更多相關(guān)java接收text/event-stream格式數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs

    hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs

    這篇文章主要介紹了使用hadoop的API對(duì)HDFS上的文件訪問(wèn),其中包括上傳文件到HDFS上、從HDFS上下載文件和刪除HDFS上的文件,需要的朋友可以參考下
    2014-03-03
  • Java中控制多線程順序執(zhí)行的六種實(shí)現(xiàn)方案

    Java中控制多線程順序執(zhí)行的六種實(shí)現(xiàn)方案

    在多線程編程中,線程的執(zhí)行順序本質(zhì)上是不確定的,由操作系統(tǒng)調(diào)度器決定,但在某些業(yè)務(wù)場(chǎng)景中,我們需要確保線程按照特定順序執(zhí)行,所以本文介紹了Java中控制多線程順序執(zhí)行的六種實(shí)現(xiàn)方案,需要的朋友可以參考下
    2025-09-09
  • IDEA+JRebel實(shí)現(xiàn)全自動(dòng)熱部署的方法步驟

    IDEA+JRebel實(shí)現(xiàn)全自動(dòng)熱部署的方法步驟

    這篇文章主要介紹了IDEA+JRebel實(shí)現(xiàn)全自動(dòng)熱部署的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java?CopyOnWriteArrayList源碼超詳細(xì)分析

    Java?CopyOnWriteArrayList源碼超詳細(xì)分析

    為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類,下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • java8中定時(shí)任務(wù)最佳實(shí)現(xiàn)方式(實(shí)現(xiàn)原理)

    java8中定時(shí)任務(wù)最佳實(shí)現(xiàn)方式(實(shí)現(xiàn)原理)

    這篇文章主要介紹了java8中定時(shí)任務(wù)最佳實(shí)現(xiàn)方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-12-12
  • Mybatis-Plus之ID自動(dòng)增長(zhǎng)的設(shè)置實(shí)現(xiàn)

    Mybatis-Plus之ID自動(dòng)增長(zhǎng)的設(shè)置實(shí)現(xiàn)

    本文主要介紹了Mybatis-Plus之ID自動(dòng)增長(zhǎng)的設(shè)置實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • java中Scanner類的簡(jiǎn)單用法分享

    java中Scanner類的簡(jiǎn)單用法分享

    這篇文章主要介紹了java中Scanner類的簡(jiǎn)單用法,有需要的朋友可以參考一下
    2014-01-01
  • 使用java swing實(shí)現(xiàn)qq登錄界面示例分享

    使用java swing實(shí)現(xiàn)qq登錄界面示例分享

    這篇文章主要介紹了使用java swing實(shí)現(xiàn)qq登錄界面示例,需要的朋友可以參考下
    2014-04-04
  • SpringBoot使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件

    SpringBoot使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件

    JavaMailSender是Spring Framework中的一個(gè)接口,用于發(fā)送電子郵件,本文主要為大家詳細(xì)介紹了SpringBoot如何使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件,需要的可以參考下
    2023-12-12
  • 如何在Spring Boot項(xiàng)目中集成MQTT協(xié)議

    如何在Spring Boot項(xiàng)目中集成MQTT協(xié)議

    本文介紹在SpringBoot中集成MQTT的步驟,包括安裝Broker、添加Eclipse Paho依賴、配置連接參數(shù)、實(shí)現(xiàn)消息發(fā)布訂閱、測(cè)試接口及注意事項(xiàng),如唯一客戶端ID、安全措施等,幫助開發(fā)者快速實(shí)現(xiàn)物聯(lián)網(wǎng)通信,感興趣的朋友一起看看吧
    2025-06-06

最新評(píng)論

江门市| 罗源县| 西城区| 翼城县| 玉溪市| 遂宁市| 康保县| 永济市| 松溪县| 大同市| 抚松县| 灵璧县| 通河县| 南木林县| 资源县| 尚志市| 库车县| 中山市| 涟源市| 兴安盟| 谢通门县| 雷波县| 阿拉善左旗| 梨树县| 昂仁县| 峨边| 白银市| 宣汉县| 武宣县| 白银市| 贵港市| 汝阳县| 斗六市| 徐闻县| 普兰店市| 丹江口市| 自贡市| 十堰市| 晋江市| 鄯善县| 巩义市|