当前位置: 首页 > news >正文

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; }}

测试结果

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python04——类(基础new)
  • MySQL Undo Log
  • 【MySQL】MySQL索引失效场景
  • AbyssFish单连通周期边界多孔结构2D软件
  • 【从零开始实现stm32无刷电机FOC】【理论】【3/6 位置、速度、电流控制】
  • c++:面向对象的继承特性
  • 防止应用调试分析IP被扫描加固实战教程
  • 随身WiFi市场乱象横生,随身WiFi测评最好的格行随身WiFi如何引领变革?
  • 【Oracle】Oracle数据库中的数据类型
  • LabVIEW自动测控与故障识别系统
  • 基于 KV Cache 实现流式 Self-Attention 序列解码
  • 镍氢电池性能不减,你敢信?
  • 前端发布项目后,解决缓存的老版本文件问题
  • MFC常见问题解决
  • 3个方法教你如果快速绕过Excel工作表保护密码
  • 分享一款快速APP功能测试工具
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • android图片蒙层
  • CentOS7简单部署NFS
  • conda常用的命令
  • C学习-枚举(九)
  • ES6系统学习----从Apollo Client看解构赋值
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • jquery ajax学习笔记
  • JS数组方法汇总
  • maya建模与骨骼动画快速实现人工鱼
  • React+TypeScript入门
  • V4L2视频输入框架概述
  • Xmanager 远程桌面 CentOS 7
  • 后端_ThinkPHP5
  • 区块链共识机制优缺点对比都是什么
  • 如何学习JavaEE,项目又该如何做?
  • 我的zsh配置, 2019最新方案
  • 用Python写一份独特的元宵节祝福
  • 正则与JS中的正则
  • #宝哥教你#查看jquery绑定的事件函数
  • $(function(){})与(function($){....})(jQuery)的区别
  • (C++)八皇后问题
  • (c语言)strcpy函数用法
  • (C语言)逆序输出字符串
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (LeetCode 49)Anagrams
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)hibernate配置管理
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (汇总)os模块以及shutil模块对文件的操作
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (六)Flink 窗口计算
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)Linux Shell编程——输入输出重定向
  • (四)鸿鹄云架构一服务注册中心