返回顶部
首页 > 资讯 > 后端开发 > JAVA >java接收text/event-stream格式数据
  • 732
分享到

java接收text/event-stream格式数据

javaservlet开发语言springboot 2023-08-17 21:08:57 732人浏览 安东尼
摘要

java接收text/event-stream格式数据,并且解决接收HTTPS会不是流式输出问题 前段时间因为要对接语音转文字接口,对方接口输出的是text/event-stream返回,返回的是流式输出,本人在百度找了好久,一直没有找到关

java接收text/event-stream格式数据,并且解决接收HTTPS会不是流式输出问题

前段时间因为要对接语音转文字接口,对方接口输出的是text/event-stream返回,返回的是流式输出,本人在百度找了好久,一直没有找到关于怎么接收流式返回的文章,可能很多人不清楚流式输出指的是什么,流式输出是和对方建立一个长连接,接口方会一直不断的给我们推送数据,而不用等待对方接口完全输出后在把返回值一次性返回。

先贴代码

get请求

public String getEventStream(String urlStr, httpservletResponse response) {        long statr = System.currentTimeMillis();        log.info("开始请求接口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:{},请求开始流式输出{}", urlStr, end - statr);            while ((len = is.read(b)) != -1) {                String line = new String(b, 0, len, "utf-8");                // 处理 event stream 数据                response.getWriter().write(line);                response.getWriter().flush();                bu.append(line);            }        } catch (IOException e) {            log.error("请求模型接口异常", e);            throw new BusinessException(ResponseCode.TOPIC_INITIATION_FaiLED);        } finally {            if (!Objects.isNull(is)) {                try {                    //12.关闭输入流                    is.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return bu.toString();    }

这里的urlStr参数是url加参数,示例:Https://baidu.com?text=12345678
response是因为我需要同样用流式输出文字给前端,如果你不需要返回给前端,可以不用response参数。

post请求

public String postEventStream(String urlStr, String JSON, HttpServletResponse response) {        long statr = System.currentTimeMillis();        log.info("开始请求接口url:{},请求参数{}", urlStr,json);        InputStream is = null;        //11.读取输入流中的返回值        StringBuffer bu = new StringBuffer();        try {            //1.设置URL            URL url = new URL(urlStr);            //2.打开URL连接            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            //3.设置请求方式            conn.setRequestMethod("POST");            //4.设置Content-Type            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");            //5.设置Accept            conn.setRequestProperty("Accept", "text/event-stream");            //6.设置DoOutput            conn.setDoOutput(true);            //7.设置DoInput            conn.setDoInput(true);            //8.获取输出流            OutputStream os = conn.getOutputStream();            //9.写入参数(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:{},请求参数{},请求开始流式输出{}", 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("请求模型接口异常", e);            throw new BusinessException(ResponseCode.TOPIC_INITIATION_FAILED);        } finally {            if (!Objects.isNull(is)) {                try {                    //12.关闭输入流                    is.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return bu.toString();    }

第一次写文章,表达不好请谅解,这里使用的jdk版本是1.8,如果对于SpringBoot怎么样返回给前端流式输出有疑问,可以私信问我

来源地址:https://blog.csdn.net/weixin_44981472/article/details/130419720

--结束END--

本文标题: java接收text/event-stream格式数据

本文链接: https://lsjlt.com/news/373317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java接收text/event-stream格式数据
    java接收text/event-stream格式数据,并且解决接收HTTPS会不是流式输出问题 前段时间因为要对接语音转文字接口,对方接口输出的是text/event-stream返回,返回的是流式输出,本人在百度找了好久,一直没有找到关...
    99+
    2023-08-17
    java servlet 开发语言 springboot
  • java如何接收json数据
    Java可以通过使用第三方库(如Jackson、Gson等)来接收和解析JSON数据。以下是使用Jackson库来接收JSON数据的...
    99+
    2023-09-22
    java json
  • java中UDP如何接收数据
    这篇文章给大家分享的是有关java中UDP如何接收数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程...
    99+
    2023-06-14
  • java如何实时接收数据
    Java可以使用Socket来实现实时接收数据。Socket是一种网络通信协议,可以在不同主机之间传输数据。以下是一个简单的示例代码...
    99+
    2023-08-20
    java
  • Java后端之俯瞰数据接收的三种方式
    目录一、前言二、正文部分第一种方法:第二种方法:第三种方法:三种方法概览图:一、前言 前面我们说了一些网页表单的功能,现在我们先来讲解数据的传输,如何进行前后端的联系 (建议先看完上...
    99+
    2024-04-02
  • springmvc接口接收参数与请求参数格式的整理
    目录springmvc接口接收参数与请求参数格式一、首先我们需要认识下http请求中的Content-Type二、注解@RequestParam(value=“id”)三、注解@Re...
    99+
    2024-04-02
  • PHP接收数据的常见方式及对应的接收方法
    题记:针对开发接口中遇到的各种问题以及知识点,做下总结,感谢相关网友的汇总,在次基础上加以完善自己的理解。 post提交数据的方式,主要体现在http协议头上的Content-Type字段,不同的Content-Type对应不同的http请...
    99+
    2023-09-02
    php 开发语言 服务器
  • java如何接收tcp协议的数据
    在Java中,可以使用Socket类来接收TCP协议的数据。下面是一个简单的示例:```javaimport java.io.Buf...
    99+
    2023-09-25
    java
  • java怎么监听端口接收数据
    在Java中,你可以使用ServerSocket和Socket类来监听端口和接收数据。首先,你需要创建一个ServerSocket对...
    99+
    2023-10-19
    java
  • java怎么用UDP实时接收数据
    要使用UDP实时接收数据,你可以使用Java的`DatagramSocket`类和`DatagramPacket`类。以下是一个简单...
    99+
    2023-08-19
    java
  • Vue发送Formdata数据及NodeJS接收方式
    目录Vue发送Formdata数据NodeJS后台接收查看FormData里的值Vue发送Formdata数据 参数blob是通过this.cropper.getCroppedCan...
    99+
    2024-04-02
  • C# 三种方式实现Socket数据接收
    目录Stream.Read 方法将数据接收放到 while (true)Stream.Read 方法 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。 语...
    99+
    2024-04-02
  • java怎么接收键盘输入的数据
    首先,要想接收键盘输入,我们需要使用 Scanner 类。而要使用 Scanner 类,需要事先将其导入进来导入需要的类后,再新建一个 Scanner 类对象,以便用其来接收输入对象建好后,我们即可调用该对象的对应方法从中提取数据注意,我们...
    99+
    2019-10-07
    java基础 java 接收 键盘 输入 数据
  • 如何在java控制台中接收数据
    如何在java控制台中实现接收数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java从控制台接收一个数字的实例详解功能:从控制台接收一个数实现代码:import&nbs...
    99+
    2023-05-31
    java ava 台中
  • java后端怎么接收前端的数据
    Java后端可以通过多种方式接收前端的数据,以下是常见的几种方式:1. URL参数:前端可以将数据通过URL参数的方式传递给后端,后...
    99+
    2023-08-25
    java
  • Java 操作XML转JSON数据格式
    java操作XML文档转为JSON数据格式 一、使用的maven依赖 org.dom4j dom4j 2.1.3 二...
    99+
    2023-10-27
    java xml json
  • C# Socket数据接收的三种实现方式
    Stream.Read 方法 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。 语法: public abstract int Read(byt...
    99+
    2024-04-02
  • java socket如何接收保证能读完数据
    这篇文章主要介绍java socket如何接收保证能读完数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!socket接收保证能读完数据//    private s...
    99+
    2023-06-25
  • JAVA 接收JSON数据,并进行转换处理
    在日常业务中经常需要与外部系统交互处理数据,在此文章中记录一下我在项目中处理json数据流程。 第一种以实体类处理 以文档中的数据结构构建实体类,使字段与需要接收转换的JSON字段变量名尽量保持一致,如果不一致,则会获取不到变量的数值,也可...
    99+
    2023-09-05
    java json 开发语言
  • 批处理从html格式(接收到的邮件)中读取数据的操作方法
    通过第三方批处理getmail可以获取到邮箱里的邮件。获取后经其自身解码,得到一个Extract*.out文件,大致看一下其格式应该为html的写法,并且内容只分一行。 <di...
    99+
    2023-01-04
    批处理html格式读取数据 批处理读取数据
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作