C#调用Java后端的restful接口(传递多参数)

2023-11-06

由于工作中的需要,在C#的winform窗口中调用html前端页面(是用webbrowser实现,此处不多做概述),但是前端请求的接口是用Java编写的,在webbrowser中使用C#来请求Java后端的restful接口。

此处是C# winform窗口中请求的部分

	void addCollection(object sender, HtmlElementEventArgs e)
	{
	
	HtmlElement a = (HtmlElement)sender;
	int value = int.Parse(a.GetAttribute("id"));
	
	String url = "http://localhost:8080/collect/add";
	HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
	request.Method = "POST";
	request.ContentType = "application/json";
	
	//创建参数
	FileBO fileBo = new FileBO();
	fileBo.fileId = value;
	fileBo.userId = Authentication.USERID;
	byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(fileBo));
	using (Stream reqStream = request.GetRequestStream())
	{
	  reqStream.Write(data, 0, data.Length);
	  reqStream.Close();
	}
	HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
	Stream stream = resp.GetResponseStream();
	//获取响应内容
	using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
	{
	   MessageBox.Show(reader.ReadToEnd()+"");
	}
	
	}

多个参数的传递主要是建一个实体类,然后将对象序列化为字节流

    class FileBO
    {
        public int fileId { get; set; }
        public string userId { get; set; }

    }

此处是调用Java的另一个接口

String url = "http://localhost:8080/collect/showAll";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json";
//创建参数

CollectBO collectBO = new CollectBO();
collectBO.userId = Authentication.USERID;
collectBO.currentPage = 1;
byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(collectBO));
using (Stream reqStream = request.GetRequestStream())
{
    reqStream.Write(data, 0, data.Length);
    reqStream.Close();
}
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
Object result = null;
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
    result = reader.ReadToEnd();
}
if(result != null)
{
    MessageBox.Show(result.ToString());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#调用Java后端的restful接口(传递多参数) 的相关文章

随机推荐

  • 折半查找(二分查找)

    1 int Binary Search SeqList L int key 在有序表L中查找关键字为key的元素 若存在则返回其位置 不存在则返回 1 int low 0 high L Tablelen 1 mid while low lt
  • postgresql常用命令

    连接数据库 默认的用户和数据库是postgres psql U user d dbname 切换数据库 相当于mysql的use dbname c dbname 列举数据库 相当于mysql的show databases l 列举表 相当于
  • 三、PowerShell-使用帮助系统

    三 PowerShell 使用帮助系统 文章目录 三 PowerShell 使用帮助系统 1 帮助系统使用场景 2 更新帮助系统 3 查看帮助 4 使用帮助系统查找命令 5 帮助详解 1 参数集和通用参数 2 可选和必选参数 3 位置参数
  • springboot集成logback配置文件,配置日志

    目录 logback简介 为什么使用logback 开始使用 1 导入依赖 2 在项目的resources目录下新建一个logback xml文件 3 填入配置 4 项目启动 logback简介 Logback是由log4j创始人设计的又一
  • 人生中第一次向开源项目提交PR记录

    git了解很久了 但是就是没有向大一点的项目提交过pr 都是自己瞎折腾 记录一下开源项目提交PR过程 省略的过程可以参考 https www runoob com git git tutorial html 这个里面包括安装 使用 介绍基本
  • Java常见面试题

    Java面试题 java基础 spring springMVC mybatis mybatisplus springboot springcloudAlibaba redis mongodb mysql rabbitmq kafka doc
  • Java循环依赖使用@Lazy(懒惰的)注解解决

    Lazy Autowired private TaskService taskService Lazy 懒加载注解的概念 SpringIoC容器会在启动的时候实例化所有单实例 bean 如果我们想要实现 Spring 在启动的时候延迟加载
  • vue2转vue3笔记

    定义 vue3中不再使用data函数 而是采用ref reactive来定义响应式的数据 ref用来存放基本数据 reactive用来存放复杂的数据 注意这两种参数的值都不能直接使用 而是使用xxx value才能对其进行复制 而且reac
  • yaml配置对象map

    yaml配置如下 objectConfig object map 1 name 对象一 desc 这是第一个对象 url https abc abc abc 2 name 对象二 desc 这是第二个对象 url https abc abc
  • 基于沙猫群优化算法的函数寻优算法

    文章目录 一 理论基础 1 沙猫群优化算法 1 初始化种群 2 搜索猎物 探索 3 攻击猎物 开发 4 探索和开发 2 SCSO算法伪代码 二 仿真实验与结果分析 三 参考文献 一 理论基础 1 沙猫群优化算法 文献 1 提出了一种新的元启
  • 【Apifox】国产测试工具雄起

    在开发过程中 我们总是避免不了进行接口的测试 而相比手动敲测试代码 使用测试工具进行测试更为便捷 高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman 他还拥有一个非常nb的功能 在接口的测试完成后 它可以一键生成接
  • Scripting.FileSystemObject控件的用法

    文件系统对象FSO的英文全称是File System Object 这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法 通过采用object method这种在面向对象编程中广泛使用的语法 将一系列操作文件和文件夹的动作通过调
  • Cadence orcad 原理图导出带书签目录的办法

    Cadence orcad 导出pdf 方便软件工程师或者其他人员查看 但是Cadence自带的导出pdf的办法不能同时导出书签目录 不利于查看 这片文章就是介绍怎么使用Cadence orcad 原理图导出带书签目录的pdf 这里以cad
  • 使用umr读取AMDGPU VRAM

    使用umr读取AMDGPU VRAM 造case 使用UMR读取内存 使用devmem2验证读取 huge page 造case gdb args kfdtest GNU gdb Ubuntu 9 2 0ubuntu1 20 04 1 9
  • 自动发送邮件(第一次做勿喷)

    import smtplib from email message import EmailMessage email EmailMessage Creating a object for EmailMessage email from x
  • 考ACM需要的知识(转)

    转自 http www ithao123 com topic 10002 html 对ACM竞赛的算法大概分了一下类 分成了数学 数据结构和算法三大块 对ACM竞赛的算法大概分了一下类 分成了数学 数据结构和算法三大块 一 数学 Mathe
  • 在机器学习里,什么是凸样本集和非凸样本集?

    如果一个数据集D是凸的 那么对于其中任意的两点x y D R 0 1 则 x 1 y D表达式 x 1 y被称作点x y 的 凸性组合 convex combination 简单来说 数据集D中任意两点的连线上的点 也会在数据集D内 那么数
  • Linux性能监控命令_nmon 安装与使用

    目录 1 安装nmon 1 1 下载 nmon 监控工具 1 2 下载 nmon 分析工具 2 nmon监控 2 1 实时监控 监控CPU 监控内存 监控磁盘 监控网络 监控文件系统 2 2 后台监控 3 图形报表解读 3 1 SYS SU
  • 剑指offer 学习笔记 构建乘积数组

    面试题66 构建乘积数组 给定一个数组A n 请构建一个数组B n 其中B i A 0 xA 1 x xA i 1 xA i 1 x xA n 1 不能使用除法 如没有不能使用除法的限制 可以用A中所有元素的乘积除A i 来得到B i 此时
  • C#调用Java后端的restful接口(传递多参数)

    由于工作中的需要 在C 的winform窗口中调用html前端页面 是用webbrowser实现 此处不多做概述 但是前端请求的接口是用Java编写的 在webbrowser中使用C 来请求Java后端的restful接口 此处是C win