Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例
场景
Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类:
Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客
上面使用HttpClient调用post接口时使用的HttpContent的格式为 application/x-www-form-urlencoded
对应的代码实现
var body = new FormUrlEncodedContent(new Dictionary<string, string>{{"serverName", "zlw"},{"mineCode", this.textBox_mineCode.Text.Trim().ToString()},{"targetServer",this.textBox_targetServer.Text.Trim().ToString()},{"port", this.textBox_port.Text.Trim().ToString()},{"user", this.textBox_user.Text.Trim().ToString()},{"pass", this.textBox_pass.Text.Trim().ToString()},{"dir", this.textBox_dir.Text.Trim().ToString()},{"filePath", this.textBox_filePath.Text.Trim().ToString()},});// responsevar response = httpClient.PostAsync(url, body).Result;
如果调用接口时明确指出必须是application/json格式,则需要修改代码实现方式。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
实现
1、以调用若依框架的登录接口为例,需要传递application/json的用户名和密码参数
这里为快速实现,所以手动构造和转义json字符串
var jsonContent = "{\"username\":\"bGVk\",\"password\":\"MTIzNDU2Nzg=\"}";
实际使用时需要使用正规的json序列化工具等方式。
然后content不再是FormUrlEncodedContent,而是StringContent
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json")
然后传参时
var response = httpClient.PostAsync(url, content).Result;
2、完整示例代码
var httpClient = new HttpClient();var url = new Uri("http://127.0.0.1:192/prod-api/login");var jsonContent = "{\"username\":\"bGVk\",\"password\":\"MTIzNDU2Nzg=\"}";using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json")){var response = httpClient.PostAsync(url, content).Result;if (response.IsSuccessStatusCode){var responseContent = response.Content.ReadAsStringAsync();var data = responseContent.Result;Console.WriteLine(data);JavaScriptSerializer js = new JavaScriptSerializer();//实例化一个能够序列化数据的类LoginResult result = js.Deserialize<LoginResult>(data);Console.WriteLine(result.token);}}
后面的部分则是读取返回值并序列化为实体类
其中实体类LoginResult为
class LoginResult{/// <summary>/// 操作成功/// </summary>public string msg { get; set; }/// <summary>////// </summary>public int code { get; set; }/// <summary>////// </summary>public string token { get; set; }}
测试结果

相关文章:
Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例
场景 Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类: Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客 上面使用HttpClient调用post接口时使用的HttpCon…...
【RAG探索第3讲】LlamaIndex的API调用与本地部署实战
原文链接:【RAG探索第3讲】LlamaIndex的API调用与本地部署实战 今天是2024年7月5日,星期五,天气晴,北京。 RAG的文章也看不少了,今天给大家带来一个llamaindex的实战。分为两个部分,调用ChatGLM的API来用l…...
C# —— 日期对象
DateTime 时间类 存储时间对象 可以获取当前时间 DateTime now DateTime.Now;// 获取当前时间 Console.WriteLine("年:" now.Year);//2023 Console.WriteLine("月:" now.Month);//9 Console.WriteLine("日:" now.Day);//12 Console.WriteLi…...
【MySQL04】【 redo 日志】
文章目录 一、前言二、redo 日志1. redo 日志格式2. Mini-Transaction2.1 以组的形式写入 redo 日志2.2 Mini-Transaction (MTR)概念 3. redo 日志写入过程3.1 redo 日志缓冲区3.3 redo 日志写入 log buffer 4. redo 日志文件4.1 redo 日志刷盘机制4.2 r…...
Android线性布局的概念与属性
线性布局(LinearLayout)是Android中最简单的布局方式,线性布局方式会使得所有在其内部的控件或子布局按一条水平或垂直的线排列。如图所示,图a是纵向线性布局示意图,图b是横向线性布局示意图。 a)纵向线性布局示意图 …...
java反射介绍
Java反射API允许你在运行时检查和修改程序的行为。这意味着你可以动态地创建对象、查看类的字段、方法和构造函数,甚至调用它们。这是一个强大的特性,但也应该谨慎使用,因为它可以破坏封装性。 以下是使用Java反射的一些常见用途:…...
Spring中@Transactional的实现和原理
这篇文章写的很详细了,引自脚本之家 Java中SpringBoot的Transactional原理_java_脚本之家...
华为仓颉可以取代 Java 吗?
大家好,我是君哥。 在最近的华为开发者大会上,华为亮相了仓颉编程语言,这是华为历经 5 年,投入大量研发成本沉淀的一门编程语言。 1 仓颉简介 按照官方报告,仓颉编程语言是一款面向全场景智能的新一代编程语言&#…...
性能测试相关理解(一)
根据学习全栈测试博主的课程做的笔记 一、说明 若未特别说明,涉及术语都是jmeter来说,线程数,就是jmeter线程组中的线程数 二、软件性能是什么 1、用户关注:响应时间 2、业务/产品关注:响应时间、支持多少并发数、…...
缓存-分布式锁-原理和基本使用
分布式锁原理和使用 自旋 public Map<String, List<Catelog2Vo>> getCatalogJsonFromDBWithRedisLock() {Boolean b redisTemplate.opsForValue().setIfAbsent(Lock, Lock, Duration.ofMinutes(1));if (!b) {int i 10;while (i > 0) {Object result redisTe…...
判断国内ip
php代码 //是否国内ip function isChinaIP($ip) {saveLog("---isChinaIP----------");$url "https://searchplugin.csdn.net/api/v1/ip/get?ip".$ip;// 发送HTTP请求$response file_get_contents($url);$utf8String mb_convert_encoding($response, &…...
linux修改内核实现禁止被ping(随手记)
概述 Linux默认允许被ping。其主要决定因素为: 内核参数防火墙(iptables/firewall) 以上的决定因素是与的关系,即需要均满足。 因此,修改linux禁被ping有以上两种方法可以实现。 修改内核文件使禁ping 1. 临时生…...
mac M1安装 VSCode
最近在学黑马程序员Java最新AI若依框架项目开发,里面前端用的是Visual Studio Code 所以我也就下载安装了一下,系统是M1芯片的,安装过程还是有点坑的写下来大家注意一下 1.在appstore中下载 2.在系统终端中输入 clang 显示如下图 那么在终端输…...
代码随想录算法训练营第二十七天 |56. 合并区间 738.单调递增的数字 968.监控二叉树 (可跳过)
56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:in…...
网络基础:IS-IS协议
IS-IS(Intermediate System to Intermediate System)是一种链路状态路由协议,最初由 ISO(International Organization for Standardization)为 CLNS(Connectionless Network Service)网络设计。…...
Java面试八股之如何提高MySQL的insert性能
如何提高MySQL的insert性能 提高MySQL的INSERT性能可以通过多种策略实现,以下是一些常见的优化技巧: 批量插入: 而不是逐条插入,可以使用单个INSERT语句插入多行数据。例如: INSERT INTO table_name (col1, col2) V…...
【密码学】什么是密码?什么是密码学?
一、密码的定义 根据《中华人民共和国密码法》对密码的定义如下: 密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。 二、密码学的定义 密码学是研究编制密码和破译密码的技术科学。由定义可以知道密码学分为两个主要分支&#x…...
k8s record 20240703
1. containerd 它不用于直接和开发人员互动,在这方面不和docker竞争 containerd的用时最短,性能最好。 containerd 是容器的生命周期管理,容器的网络管理等等,真正让容器运行需要runC containerd 是一个独立的容器运行时&am…...
Ansible常用模块
华子目录 Ansible四个命令模块1.组成2.特点3.区别3.1command、shell模块3.2raw模块 4.command模块4.1参数表4.2free_form参数 5.shell模块5.1作用5.2例如 6.script模块6.1示例 7.raw模块7.1参数7.2示例 文件操作模块1.file模块1.1参数1.2示例 2.copy模块2.1参数 Ansible四个命令…...
【JavaScript脚本宇宙】提升用户体验:探索 JavaScript 库中的浏览器特性支持检测
深入探讨JavaScript库:功能、配置与应用场景 前言 在现代的Web开发中,JavaScript库扮演着至关重要的角色,帮助开发人员简化代码、提高效率、实现更好的用户体验。本文将探讨几个常用的JavaScript库,包括模块加载库、数据绑定库和…...
Arduino红外遥控库:让硬件设备听懂遥控器的语言
Arduino红外遥控库:让硬件设备听懂遥控器的语言 【免费下载链接】Arduino-IRremote Infrared remote library for Arduino: send and receive infrared signals with multiple protocols 项目地址: https://gitcode.com/gh_mirrors/ar/Arduino-IRremote 你是…...
从开发到SRE:PyTorch 3.0静态图生产部署必须签署的4份SLA协议,及对应可观测性埋点清单
第一章:PyTorch 3.0静态图分布式训练生产部署全景概览PyTorch 3.0 引入原生静态图编译能力(TorchDynamo Inductor 后端深度集成),结合 torch.distributed 的增强调度器与弹性容错机制,构建了面向大规模集群的端到端生…...
告别空谈!用Langchain4j的Function Calling,为你的Java AI助手加上“查询订单”的实战能力
实战Langchain4j函数调用:为Java AI助手赋予订单查询能力 想象一下,当你的医疗预约AI助手不仅能回答"如何预防感冒",还能在你说"查看我下周的挂号记录"时,直接调取数据库返回具体预约信息——这种"能说…...
Qwen3.5-9B镜像安全加固:非root用户运行+端口绑定限制+HTTPS代理配置
Qwen3.5-9B镜像安全加固:非root用户运行端口绑定限制HTTPS代理配置 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,具备强大的逻辑推理、代码生成和多轮对话能力。该模型支持多模态理解(图文输入)和长上下文处理&a…...
Ostrakon-VL像素终端实战:用实时摄像头完成便利店突击巡检
Ostrakon-VL像素终端实战:用实时摄像头完成便利店突击巡检 1. 像素特工终端介绍 想象一下,你是一名便利店巡检员,每天需要检查几十家门店的商品陈列、价签准确性和店面整洁度。传统方法需要手动拍照记录、填写表格,既耗时又容易…...
SAMD21 Turbo PWM:硬件级高精度同步PWM驱动详解
1. SAMD21 Turbo PWM 库深度解析:面向嵌入式工程师的高性能PWM驱动实践指南SAMD21 Turbo PWM 是一款专为基于 ATSAMD21G 微控制器(如 Arduino Nano 33 IoT、Adafruit Itsy Bitsy M0、Trinket M0 等)设计的底层硬件加速 PWM 库。它绕过 Arduin…...
鸿蒙开发实战:HDC工具在本地模拟器中的高效调试技巧
1. HDC工具入门:鸿蒙开发的瑞士军刀 第一次接触HDC工具时,我把它当成了鸿蒙版的ADB。但用久了才发现,这个看似简单的命令行工具,其实是鸿蒙开发的万能钥匙。HDC全称Huawei Device Connector,就像它的名字一样ÿ…...
飞机喷涂废气治理厂家丨一场看不见的“废气治理战”如何打响?
你有没有注意过,当你透过舷窗望向停机坪时,那些静静停靠的飞机,机身光洁如镜,涂装色彩鲜明?一架飞机交付使用,到每隔数年的定期大修,飞机都需要经历复杂的喷涂过程。这层看似简单的“外衣”&…...
STM32单片机技术优势与应用指南
1. STM32的崛起背景与技术优势2007年之前,8位单片机市场被8051架构主导,16位市场则有MSP430等产品。这些传统MCU在简单控制领域表现出色,但随着物联网时代的到来,其局限性逐渐显现:性能瓶颈:8位机的处理能力…...
LSM303D六轴IMU驱动开发:I²C底层集成与100Hz高精度运动检测
1. LSM303D传感器驱动库深度解析:面向嵌入式系统的IC底层集成与高精度运动检测实现LSM303D是意法半导体(STMicroelectronics)推出的超低功耗、高精度六轴惯性测量单元(IMU),集成3轴加速度计与3轴磁力计于单…...
