Java 以数据流的形式发送数据request Java 数据封装到request中

news2024/11/14 3:09:50

        Java 以数据流的形式发送数据request Java 数据封装到request中

一、描述

        1、在做微信支付结果通知的时候,看到一个描述:微信会把相关支付结果及用户信息通过数据流的形式发送给商户 ,那么java如何通过数据流的形式发送数据呢?

二、代码实现

        1、使用 HttpURLConnection 实现

public static String doPostFileStreamAndJsonObj(String url , String json) {
		String result = "";// 请求返回参数
		try {
			URL u = new URL(url);
			HttpURLConnection conn = (HttpURLConnection) u.openConnection();
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
			conn.setRequestMethod("POST");
			
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36");
			conn.setRequestProperty("Charsert", "UTF-8");
			// 这里的content-type 设置为json格式 --- 否则不能传输数据
			conn.setRequestProperty("Content-Type", "application/json");
			conn.setChunkedStreamingMode(10240000);
			// 定义输出流,有什么数据要发送的,直接后面append就可以,记得转成byte再append
			OutputStream out = new DataOutputStream(conn.getOutputStream());
			byte[] end_data = json.getBytes(Charset.defaultCharset());// 定义最后数据分隔线
		
			// 发送流
			out.write(end_data);
			out.flush();
			out.close();
			
			// 定义BufferedReader输入流来读取URL的响应
			BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line = "";
			while ((line = reader.readLine()) != null) {
				result += line;
			}
		} catch (Exception e) {
			System.out.println("发送POST请求出现异常!" + e);
			e.printStackTrace();
		}
		return result;
	}

        2、SpringMVC中接收

@RequestMapping("/req/stream")
public String req(HttpServletRequest request) throws IOException {
    final StringBuffer sb = new StringBuffer();
    BufferedReader reader = request.getReader();
    String line ;
    while((line=  reader.readLine())!= null) {
        sb.append(line);
    }
    System.out.println("获取到结果是===>>>" + sb.toString());
    return sb.toString();
}

        3、测试步骤:

  • 启动服务: http://localhost:8080
  • 执行下面的测试代码,查看 服务中日志输出 和 代码返回结果
@Test
public void testStream () throws Exception{
    String url = "http://localhost:8080/httpStream/req/stream";

    Map<String,String> data = new HashMap<String,String>();
    data.put("id", "123");
    data.put("name", "王二狗");
    String doPost = HttpStreamUtil.doPostFileStreamAndJsonObj(url, JsonMapper.toJsonString(data));
    System.out.println(doPost);
    System.out.println("执行结束》。。");
} 

三、总结

        1、只要以 post - json的方式提交数据,即可使用 request.getReader(); 方式,获取数据。

Content-Type:application/json

--- postman 相关文章学习

https://thinkcode.blog.csdn.net/article/details/83114474

https://thinkcode.blog.csdn.net/article/details/115366637 

https://thinkcode.blog.csdn.net/article/details/116454823 

--- 微信支付相关文章

https://thinkcode.blog.csdn.net/article/details/110948517

https://thinkcode.blog.csdn.net/article/details/110927389 

 https://thinkcode.blog.csdn.net/article/details/109074212

 https://thinkcode.blog.csdn.net/article/details/109028220

 https://thinkcode.blog.csdn.net/article/details/88998211

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea中的Debug工具的使用介绍

文章目录1、设置断点给断点添加条件2、打开DebugDebu启动方式3、Debug功能介绍左侧功能区顶部功能区使用Debug工具时要先进行打断点的操作1、设置断点 断点就是程序运行暂停的位置&#xff0c;在这个位置以后可以根据自己的操作一步一步的执行程序。 idea中设置断点&#xff1…

FreeMarker基础知识

1、总览 官网&#xff1a;http://freemarker.foofun.cn/ 视频地址&#xff1a;https://www.bilibili.com/video/BV1zZ4y1u7iA 2、FreeMarker概述 2.1 FreeMarker概念 FreeMarker 是⼀款 模板引擎&#xff1a; 即⼀种基于模板和要改变的数据&#xff0c; 并⽤来⽣成输出⽂本(…

动态化护眼全新体验,被誉为“护眼神器”的南卡护眼台灯Pro评测出炉

自从家中的孩子上小学后&#xff0c;随着课后作业的逐渐增加&#xff0c;在书房学习时间更长了&#xff0c;由于平时关注到孩子用眼习惯&#xff0c;眼睛有些轻度近视。作为年轻一代的家长&#xff0c;对孩子的用眼健康方面一定要重视&#xff0c;在照明方面&#xff0c;护眼台…

Redis基础篇:Redis简介和安装

第一章&#xff1a;Redis简介 一&#xff1a;简介 Redis诞生于2009年&#xff0c;基于内存的键值型NoSQL数据库。 二&#xff1a;特征 1&#xff1a;键值型&#xff1a;value支持多种不同的数据结构&#xff0c;功能丰富。 2&#xff1a;单线程&#xff1a;单线程执行命令&…

Kubernetes介绍

1 什么是Kubernetes&#xff1f; Kubernetes是容器集群管理系统&#xff0c;是一个开源的平台&#xff0c;可以实现容器集群的自动化部署、自动扩缩容、维护等功能。 使用Kubernetes可以&#xff1a; ● 自动化容器的部署和复制 ● 随时扩展或收缩容器规模 ● 将容器组织成组&…

第四章.神经网络—单层感知器

第四章.神经网络 4.1 单层感知器 1.单层感知器示意图 1).第一种表示方法&#xff1a; 举例说明&#xff1a; 2).第二种表示方法&#xff1a; 公式推导&#xff1a; 举例说明&#xff1a; 预测值(y)和标签值(t)相同&#xff0c;停止迭代循环. 2.学习率η 1).η取值说明&…

Python流程控制语句之跳转语句

上一篇&#xff1a;Python流程控制语句之循环语句 文章目录前言一、break 语句二、continue 语句三、pass 空语句总结前言 上一篇博客我们讲解了Python中的循环语句&#xff0c;知道循环条件一直满足时&#xff0c;代码将会一直执行下去&#xff0c;就像一辆迷路的车&#xff…

《满江红》《流浪地球2》孰能胜出,元宇宙电影能否成为票房黑马?

截止1月28日12时&#xff0c;2023年春节档期总票房达67.57亿元。其中&#xff0c;《满江红》以26.05亿元票房居2023年春节档票房榜榜首&#xff1b;《流浪地球2》位居第二&#xff0c;票房成绩为21.63亿元。摆在未来人类面前就两条路,一条向外星辰大海,一条向内元宇宙。《流浪地…

微信小程序017音乐播放器系统 php java

小程序前端框架&#xff1a;uniapp 小程序运行软件&#xff1a;微信开发者 后端技术:javaSsm(SpringSpringMVCMyBatis)vue.js 后端开发环境:idea/eclipse 数据库:mysql 基于音乐播放器小程序的设计基于现有的手机&#xff0c;可以实现首页、个人中心、用户管理&#xff0c;音乐…

拉伯证券|开盘暴跌20%,三文鱼第一股业绩变脸!

超900家公司成绩预亏&#xff0c;多家公司发布成绩预告后大跌。 佳沃食品今天开盘20%跌停&#xff0c;这是该股史上开盘最大跌幅。早盘该股成交额显着扩展&#xff0c;半日成交额超越3.5亿元&#xff0c;收盘跌18.04%。 资料显现&#xff0c;佳沃食品是优质蛋白食品领域的大消…

python入门教程(非常详细),python贪吃蛇最简单代码

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python编程代码大全设计入门&#xff0c;python入门教程(非常详细)&#xff0c;现在让我们一起来看看吧&#xff01; 1、python编程例子有哪些&#xff1f; python编程经典例子&#xff1a; 1、画爱心表白、图形都是由…

除了Navicat破解版、DBeaver,免费还好用的数据库管理工具/SQL工具还有推荐吗?

很多国内SQL学习者和开发者对Navicat、DBeaver等国外数据库管理工具已经很熟悉了。但是&#xff0c;有没有比他们更适合SQL开发者的数据库管理/SQL工具呢&#xff1f;这里&#xff0c;笔者结合自己的调研来聊一下。 笔者做过一些用户调研。 Navicat虽然功能强大&#xff0c;但…

win10安装opencv

第一步&#xff1a;会有skbuild&#xff0c;cmake等依赖库报错&#xff0c;先安装依赖pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-buildpip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple cmake第二步&#xff1a;pip3 install opencv-python若…

Python数据可视化之折线图

Python数据可视化之折线图 提示&#xff1a;前言 Python数据可视化之折线图 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录Python数据可视化之折线图前言一、导入包二、选择数据集三、折线图四、图形的大小和图表…

什么游戏视频录制软件比较好?10 款的游戏录屏软件你值得收藏

市面上有各种各样的游戏捕捉软件&#xff0c;当然&#xff0c;它们都声称是有史以来最好的游戏软件。但有些比其他的更好&#xff0c;最适合您的游戏记录器在很大程度上取决于您要玩的游戏以及您运行的 PC 类型。 目前最好的游戏屏幕录像机 让我们来探索自称是最佳游戏屏幕录…

NetLogo 语法总结

NetLogo 语法总结NetLogo语法的怪异。。。。。。NetLogo语法关键在于你要把它当成一个软件使用&#xff0c;而不是一个通用的编程语言。首先&#xff0c;上网搜搜setup go是怎么用的&#xff0c;或者买本书&#xff0c;本文不再赘述NetLogo世界turtlespatcheslinksobserver(上帝…

np.savetxt()存储数据

前言 使用np.savetxt()方法可以将数据保存为txt文件或者是csv文件。 1 np.savetxt()存储txt文件 1-1 基础参数 numpy.savetxt(fname,arrry,fmt%.18e,delimiter ,newline\n,header,footer,comments# ,encodingNone,) 1-2 参数详解 fname:要存入的文件、文件名、或生成器。 ar…

令人窒息的百度面试题(正值换工作季,还不收藏???)

最近去网上找了一些百度的面经&#xff0c;冥冥之中在众多的面试题中打开了下边两个面试题&#xff1a; 2021百度前端社招面经 百度前端面试题分享&#xff0c;带答案 看完之后我直呼“哇哦~”&#xff0c;全部在我的射程范围之内。我该不会如此幸运到问的全会吧。 是的&am…

横扫150道MySQL大厂面试题【视频+文档】

MySQL是程序员面试的必考题&#xff0c;因其体系庞大&#xff0c;架构设计复杂&#xff0c;是面试的重点与难点。教程基于大厂面试的充分调研&#xff0c;深度挖掘用人企业的标准与要求&#xff0c;针对MySQL知识体系和高频面试题&#xff0c;把内容分为五大部分&#xff1a;My…

如何保障MES系统实施?实现“大物流、小生产”

MES系统的成功应用不只是单单将软件系统开发出来&#xff0c;然后直接安装应用就可以进行运行做工。MES系统的运行需要从多个方面出发&#xff0c;确保软件系统的成功实施部署&#xff0c;然后在生产当中发挥自己的作用。实际情况开发为了确保MES系统的正常运行&#xff0c;必须…