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

2023-05-16

        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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 以数据流的形式发送数据request Java 数据封装到request中 的相关文章

随机推荐

  • 用Opencv打造一台自动视觉目标跟踪系统

    平移 倾斜伺服装置 xff0c 帮助摄像机使用视觉自动跟踪颜色对象 简介 现在我们将使用我们的设备帮助相机自动跟踪颜色对象 xff0c 如下所示 xff1a OpenCV可免费用于学术和商业用途 它具有C 43 43 xff0c C xff
  • error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"【转载+修改】

    error Microsoft Visual C 43 43 14 0 is required Get it with Microsoft Visual C 43 43 Build Tools http landinghub visuals
  • 如何使用OpenCV实现多张图像拼接

    先来看看OpenCV官方的例子得到效果是非常的好 xff0c 输入的images如下 xff1a 效果 xff1a Stitcher类与detail命名空间 OpenCV提供了高级别的函数封装在Stitcher类中 xff0c 使用很方便
  • 如何使用OpenCV对物体进行搜索检测与识别

    在本教程中 xff0c 我们将了解对象检测中称为 选择性搜索 的重要概念 我们还将用C 43 43 和Python共享OpenCV代码 物体检测与物体识别 对象识别算法识别图像中存在哪些对象 它将整个图像作为输入 xff0c 并输出该图像中
  • 一种基于深度学习的方法来检测摩托车头盔的使用

    背景 据统计使用摩托车头盔可以将道路交通事故中摩托车驾驶员致命伤害的可能性降低42 xff05 xff0c 尽管如此 xff0c 遵守摩托车头盔还是较少 xff0c 尤其是在发展中国家 xff0c 为了有效开展针对性的头盔使用运动 xff0
  • 偏振光相机1——偏振光

    光的电磁波属性 光是一种电磁波 xff0c 这个概念大家应该不陌生 既然是电磁波 xff0c 那我们从电磁波的特性上来看它有哪些属性 用图1中的交变电磁场来描述光的特性 xff0c 电场和磁场在空间中相互垂直 xff0c 它们同时与光的传播
  • 偏振光相机2——索尼大法

    Stokes参量 在上一篇 偏振光相机 偏振光 中 xff0c 我们知道偏振光有线性偏振光 椭圆偏振光 圆偏光 那么如何定量的描述偏振光呢 xff1f Stokes矢量是一种广泛用来描述偏振光属性的方法 图1 不同类型的偏振光 线性偏振光和
  • 偏振光相机3——偏振应用

    在之前的2篇中 xff0c 介绍了偏振光的基本概念和基于SONY最新CMOS偏振传感器芯片的相机 在本篇中 xff0c 我们来看看偏振相机的一些应用 偏振相机的应用离不开偏振光 xff0c 那么先看看如何得到偏振光信息 如何获取偏光 在 偏
  • 【干货】生成对抗网络GANs算法在医学图像领域应用总结

    Goodfellow等人 介绍了生成对抗网络 xff08 GAN xff09 以模拟数据分布 由于与两个基本属性相关的原因 xff0c GAN可以合成真实图像 GAN是一种无监督的训练方法 xff0c 可以通过类似于人类学习图像特征的方式获
  • 图像算法之3D人脸识别技术原理概述

    随着深度学习技术的进步 xff0c 面部相关任务的研究也成为学术界和工业界的热门话题 众所周知的面部任务通常包括面部检测 xff0c 面部识别 xff0c 面部表情识别等 xff0c 其主要使用2D RGB面部 xff08 通常包括一些纹理
  • 如何使用OpenCV计算机视觉检测帕金森病图片

    在本教程中 xff0c 您将学习如何使用OpenCV和机器学习在手绘的螺旋和波浪图像中自动检测帕金森病 本教程来自来自巴西的博士生Joao Joao有兴趣利用计算机视觉和机器学习基于几何图形 xff08 即螺旋和符号波 xff09 自动检测
  • OpenCV快速寻找图像差异

    如何使用结构相似性指数 xff08 SSIM xff09 将两个图像与Python进行比较 使用这种方法 xff0c 我们能够轻松确定两个图像是否相同或由于轻微的图像处理 xff0c 压缩伪像或有目的的篡改而产生差异 今天我们将扩展SSIM
  • C++17使用std::optional表示一个可能存在的值

    文章目录 前言返回一个bool值使用 std optional 改写总结 前言 平时写代码会遇到一种传递参数特殊值标记特殊流程 xff0c 或者函数返回值存在魔法数的情况 xff0c 很需要一种标记参数或返回值状态的结构 xff0c 那么在
  • Redhat进程管理

    进程管理 概论 xff1a 程序 xff1a 静态的代码 xff0c 占用磁盘空间 进程 xff1a 动态的代码 xff0c 占用内存 cpu xff08 提供服务的主体 xff09 进程的唯一标识 xff1a PID 编号 父进程 子进程
  • ETCD 高可用集群 Centos7

    ETCD 高可用集群 在本地三台虚拟机以static方式搭建ETCD集群测试环境 xff0c 均为Centos7 一 准备工作 1 主机名及IP 主机名IPvm5192 168 56 10vm6192 168 56 11vm7192 168
  • Python 蓝桥杯 七段码

    一 题目描述 二 题目分析 我使用的是暴力解决 xff0c 因为一共就7位 xff0c 但是容易出现漏算或多算 xff0c 经过很久的找错误和改正才得到答案80 一个较易弄错的问题就是出现3中组合 xff1a abde afcd bcef
  • Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml

    Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml 一 转换代码 1 XML字符串转换为JSON description XML字符串转换为JSON 64 param strXM
  • 5年的人寿保险 、定期存款 和 基金定投 计划对比

    5年的人寿保险 定期存款 和 基金定投 计划对比 一 5年人寿保险情况 市面上普遍的5年人寿保险 xff0c 预期分红的利息是 4 2 情况 xff0c 实际也存在少分 或者不分红的可能 xff0c 承诺的保本利息在不到2 的情况 既然为保
  • Java8 Optional 类常用方法 Java8 Optional orElse 、orElseGet 、orElseThrow 方法区别

    Java8 Optional 类常用方法 Java8 Optional orElse orElseGet orElseThrow 方法区别 一 概述 Optional 类 xff0c 是Java8 新增加的一个对象容器 主要的功能有 xff
  • Java 以数据流的形式发送数据request Java 数据封装到request中

    Java 以数据流的形式发送数据request Java 数据封装到request中 一 描述 1 在做微信支付结果通知的时候 xff0c 看到一个描述 xff1a 微信会把相关支付结果及用户信息通过数据流的形式发送给商户 xff0c 那么