WinFrom调用webapi接口方法及其应用实例
1.WinFrom调用webapi接口方法
最近项目要在winfrom项目中调用webAPI,故在网上查找资料,找到了一个WinFrom调用webapi接口的通用方法,关键代码:
#region WinFrom调用webapi接口通用方法private async Task<string> InvokeWebapi(string url, string api, string type, Dictionary<string, string> dics){string result = string.Empty;HttpClient client = new HttpClient();client.DefaultRequestHeaders.Add("authorization", "Basic YWRtaW46cGFzc3dvcmRAcmljZW50LmNvbQ==");//basic编码后授权码client.BaseAddress = new Uri(url);client.Timeout = TimeSpan.FromSeconds(510);if (type.ToLower() == "put"){HttpResponseMessage response;//包含复杂类型if (dics.Keys.Contains("input")){if (dics != null){foreach (var item in dics.Keys){api = api.Replace(item, dics[item]).Replace("{", "").Replace("}", "");}}var contents = new StringContent(dics["input"], Encoding.UTF8, "application/json");response = client.PutAsync(api, contents).Result;if (response.IsSuccessStatusCode){result = await response.Content.ReadAsStringAsync();return result;}return result;}var content = new FormUrlEncodedContent(dics);response = client.PutAsync(api, content).Result;if (response.IsSuccessStatusCode){result = await response.Content.ReadAsStringAsync();return result;}}else if (type.ToLower() == "post"){var content = new FormUrlEncodedContent(dics);HttpResponseMessage response = client.PostAsync(api, content).Result;if (response.IsSuccessStatusCode){result = await response.Content.ReadAsStringAsync();return result;}}else if (type.ToLower() == "get"){HttpResponseMessage response = client.GetAsync(api).Result;if (response.IsSuccessStatusCode){result = await response.Content.ReadAsStringAsync();return result;}}else{return result;}return result;}#endregion
2.应用实例
创建一个名为callWebAPI的窗体项目,在窗体加两个textBox。下面实例主要是调用webAPI的方法获取数据存为json格式,然后将json格式的数据从文件中读取出来。调用代码如下:
private async void callWebAPI_Load(object sender, EventArgs e){#region 调用webapi并存为json格式文件string api = "";string url = "http://10.3.11.2/SimploWebApi/api/LASER_System/LASER_GetLineShowConfig?typeString=2";Dictionary<string, string> dics = new Dictionary<string, string>();Task<string> task = InvokeWebapi(url, api, "post", dics);string result = task.Result;//textBox1.Text = result;if (result != null){JObject jsonObj = null;jsonObj = JObject.Parse(result);DataInfo info = new DataInfo();info.statusCode = Convert.ToInt32(jsonObj["statusCode"]);//info.message = jsonObj["message"].ToString();if (info.statusCode == 0){JArray jlist = JArray.Parse(jsonObj["Data"].ToString());string json = JsonConvert.SerializeObject(jlist, Formatting.Indented);//File.WriteAllText("Standard.json", json);//将数据存为json格式for (int i = 0; i < jlist.Count; ++i) //遍历JArray { JObject tempo = JObject.Parse(jlist[i].ToString());textBox1.Text += tempo["line"].ToString(); }}}#endregion#region 获取json文件数据// 读取JSON文件内容string jsonFilePath = "Standard.json";string jsons = File.ReadAllText(jsonFilePath);// 反序列化JSON到对象Standard standard = JsonConvert.DeserializeObject<Standard>(jsons);textBox2.Text = standard.line + "," + standard.linePlace;#endregion}
以上实例还需建立DataInfo类和Standard类
DataInfo类
DataInfo info = new DataInfo();
public class DataInfo{public int statusCode { get; set; }public string message { get; set; } }
Standard类
Standard standard = JsonConvert.DeserializeObject<Standard>(jsons);
public class Standard{public string line { get; set; }public string linePlace { get; set; } }
以上实例用了json,所以需要引用Newtonsoft.Json.dll(具体引用方法见以前文章)
using Newtonsoft.Json;
Standard.json文件
{"line": "B10","linePlace": "CQ_1", }
补充:
get的传参方式
string api = "";string sWo = "1025"; string url = "http://10.1.1.1/api/MES/API_GetLaserAOIParm?sWo=" + sWo + "";Dictionary<string, string> dics = new Dictionary<string, string>(); Task<string> task = InvokeWebapi(url, api, "post", dics);string result = task.Result;
post的传参方式
string api = "";string sWo = "1025"; string url = "http://10.1.1.1/api/MES/API_GetLaserAOIParm";Dictionary<string, string> dics = new Dictionary<string, string>();dics = new Dictionary<string, string>{{ "sWo", sWo }, };Task<string> task = InvokeWebapi(url, api, "post", dics);string result = task.Result;
参考文献:WinForm如何调用WebApi接口_c# weiapi winform-CSDN博客
结语:本文主要记录WinFrom调用webapi接口方法及其应用实例,以上代码是本人亲测可用的,在此记录,方便查阅。
相关文章:
WinFrom调用webapi接口方法及其应用实例
1.WinFrom调用webapi接口方法 最近项目要在winfrom项目中调用webAPI,故在网上查找资料,找到了一个WinFrom调用webapi接口的通用方法,关键代码: #region WinFrom调用webapi接口通用方法private async Task<string> InvokeWe…...
智能巡检企业级域名 SSL 证书
一、概述 SSL 证书是一种数字证书,用于在用户和服务器之间建立加密链接,确保数据传输的安全性,防止数据在传输过程中被截获或篡改。SSL 证书不仅保护了数据传输过程中的隐私和完整性,还可以帮助验证网站的身份,防止钓…...
海思35XX系列(三)sensor(传感器)
刚开始接触这个概念的时候感觉比较模糊,简单记录一下吧 Sensor(传感器)是一种可以感知外部环境并将感知到的信息转化为可用的电信号或其他形式的工具。传感器广泛应用于电子设备、工业自动化、汽车、医疗器械等领域,用于测量、监…...
dfs(续做)
1.混境之地5 #include<bits/stdc.h> using namespace std; typedef long long ll; const int dx[4] {0,1,0,-1}; const int dy[4] {1,0,-1,0}; int n,m,k,a,b,c,d,sign0; int h[1010][1010],visit[1010][1010]; void dfs(int x,int y,bool used) {if(xc&&yd){si…...
OpenStack;异构算力网络架构;算力服务与交易技术;服务编排与调度技术
目录 OpenStack 一、OpenStack概述 二、OpenStack的主要组件及功能 三、OpenStack的架构 四、OpenStack的应用场景 异构算力网络架构 算力服务与交易技术 服务编排与调度技术 OpenStack 是一个开源的云计算管理平台项目,由NASA(美国国家航空航天局)和Rackspace合作…...
PLC-Recorder对于数据采集时间戳偏差的修正功能
目录 一、修正原理 二、使用步骤 1、初始状态,计算修正系数 2、启动和使用 3、修正系数的手动修改 三、修正前后的效果对比 1、修正前的时间偏差曲线 2、修正后的效果曲线 四、注意事项 1、控制器可能的时钟波动 2、平移参数评估 3、参数保存 五、关于…...
自定义监控
代码说明: 导入必要的库 import time import psutil import GPUtil from prometheus_client import start_http_server, Summary, Counter, Gaugepsutil:用于获取系统的CPU、内存、磁盘和网络信息。GPUtil:用于获取GPU信息。prometheus_cli…...
关于使用php的mpdf插件遇到的一些问题
一.插件版本 "mpdf/mpdf": "^8.0", 二.报错:Undefined index: list_style_type 这个是插件无法识别 li 标签导致,生成pdf是加入下面代码 <style> li { list-style-type: none; list-style-image: none; list-style-positi…...
电脑截图,颜色变淡的问题解决
解决 Windows 11 在 HDR 模式下截图 Edge 浏览器界面时画面过曝的问题-腾讯云开发者社区-腾讯云 (tencent.com) 主要是浏览器用错了东西,调一下就好,详情看链接 联想拯救者y9000p为例,选择sRGB,就好啦,拜拜喽&#x…...
uniApp跳转外链
创建一个新的页面,在该页面中使用web-view组件加载外部URL:pages/web-view/web-view <template><view><uni-list><uni-list-itemtitle"打开外部链接"click"openExternalLink"></uni-list-item></…...
科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”
科技云报道原创。 从文生文到文生图,再到文生视频,近年来,以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业的新一轮浪潮。2024年更是被业内称为大模型应用爆发元年。 年初,Sora横空出世验证了Scalling Law在视频生…...
SpringSecurity+Mysql数据库实现用户安全登录认证
Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式,还是响应式web应用程序都完美支持,现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说,SpringSecurity功能更加复杂而且更加强…...
虚拟网卡添加ip
1.虚拟机网卡添加 1.进入虚拟机设置添加网卡即网络适配器 2.配置文件修改 1.查看网卡是否添加成功 ip ad ifconfig 其中ens161就是我们新添加的设备同时这个ens161也是我们硬件名字 2.进入系统配置文件 cd /etc/sysconfig/network-scripts/#配置文件目录[rootlocalhost ne…...
Unity向量线性插值Lerp
inline glm::vec3 Lerp(glm::vec3 start, glm::vec3 end, float t){t glm::clamp(t, 0.0f, 1.0f);return (start*(1-t)end*t); }...
fatal: Could not read from remote repository. 解决方法
问题描述: Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists。 解决方法: 当在网上尝试大量方法仍然失败的时候,不妨试试这个方法。 在 github 上&…...
postman查询单条数据Get方法,无任何输出,idea后端也没有任何数据和提示的解决方法
问题描述: 正常使用postman测试,输入内容没有错误,但是却没有任何消息 后端也是,没有任何消息: 解决方法: 问题的原因主要是因为postman: 我们只需要新建一个页面,把刚才的查询语…...
query怎么改写,才能实现高质量的知识问答系统
为了实现高质量的知识问答系统,query改写需要综合利用多种技术,确保改写后的查询更具语义性、准确性和完整性。以下是具体的步骤和方法: 1. 同义词和短语替换 步骤: 建立同义词库:使用现有的同义词词典或根据特定领…...
Python实战——轻松实现动态网页爬虫(附详细源码)
大家好,我是东眠的鱼,专注原创,致力于用浅显易懂的语言分享爬虫、数据分析及可视化等干货,希望人人都能学到新知识。<文末附带精品籽料哦,也可以和博主一起学Python呀!> 项目背景 有同学自学爬虫时…...
Python应用—利用opencv实现图像匹配
1.创作需求 我们通常需要从一幅图中找到自己想要的信息,例如从一堆表情中找到,自己需要的表情。 2.创作思路 1.使用模板图片作为卷积核与原图进行卷积运算,得出匹配度超过某一阈值的范围。 2.对该部分进行框选 3.工具 主要使用opencv库实现,通过 cv2.matchTemplate(…...
Excel函数基础(二)
1、单元格名称 框选单元格(不含标题),公式选项卡->定义名称, 或者框选单元格后,在左上角的栏位直接输入要定义的名字,按下enter键即可 这样在使用函数时,数据范围参数可以用定义的名称来替…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
