首页 > 其他分享 >Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

时间:2024-07-04 16:09:05浏览次数:16  
标签:传参 http 示例 Text json ToString var new textBox

场景

Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124157296

上面使用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()},
                });
                // response
                var 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; }
    }

测试结果

 

标签:传参,http,示例,Text,json,ToString,var,new,textBox
From: https://www.cnblogs.com/badaoliumangqizhi/p/18284048

相关文章

  • Log4Net配置详解及输出自定义消息类示例
    1.简单使用实例1.1添加log4net.dll的引用。  在NuGet程序包中搜索log4net并添加,此次我所用版本为2.0.17。如下图:1.2添加配置文件  右键项目,添加新建项,搜索选择应用程序配置文件,命名为log4net.config,步骤如下图:1.2.1log4net.config简单配置示例  下面是一个简单的......
  • 前端Ajax中请求数据中body和query传参的方法
    一、post请求可以传body和query两种形式的参数:【body传参】:$.ajax({type:"POST",url:"xxxxxxxxxxxxxx",data:{ids:tempID}...})【body传参,当要求传JSON字符串格式的参数时】:$.ajax({type:"POST",url:"xxxxxxxxxxxx......
  • HTTP协议
    URL是什么呢?HTTP协议GET、POST、PUT以及DELETE代表什么含义呢?HTTP:请求头HTTP请求-请求体HTTP响应-状态行HTTP响应-响应头HTTP响应-响应体HTTP响应-常见响应状态码......
  • HttpServletRequest和ServletRequest
    ServletRequest:这是JavaServletAPI中的一个基础接口,位于javax.servlet包中。它定义了处理客户端请求的基本方法。HttpServletRequest:这个接口继承自ServletRequest接口,并且添加了与HTTP协议相关的方法。它位于javax.servlet.http包中,用于封装客户端(如Web浏览器)通过HTTP协议发......
  • WebSocket 前后端示例
    importcn.hutool.json.JSONUtil;importorg.springframework.stereotype.Component;importjavax.websocket.OnClose;importjavax.websocket.OnMessage;importjavax.websocket.OnOpen;importjavax.websocket.Session;importjavax.websocket.server.PathParam;imp......
  • [计算机网络]HTTP 1.0/HTTP 1.1/HTTP 2.0
    HTTP/1.0——无状态无连接的应用层协议无状态:服务器不跟踪不记录请求过的状态无连接:浏览器每次请求都需要建立tcp连接HTTP/1.0规定浏览器和服务器保持短暂的连接。浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户......
  • 什么是 HTTP Range请求(范围请求)
    HTTPRange请求,也称为范围请求,是一种HTTP协议的功能,它允许客户端请求服务器发送一个资源的一部分,而不是整个资源。这种请求通常用于处理大文件的下载或流媒体服务,尤其是在网络不稳定或需要断点续传的场景中非常有用。范围请求的基本语法如下:Range:bytes=<start_byte>-<end_b......
  • csrf跨站请求,钓鱼网站实现示例,CSRF校验,CSRF相关装饰器,Auth模块,扩展Auth表
    ⅠDjango框架之csrf跨站请求【一】跨站请求伪造介绍【1】引入CSRF(Cross-SiteRequestForgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而......
  • firewalld防火墙:直接规则、富语言、地址伪装;以及综合示例
    目录直接规则示例(1)创建一个黑名单功能链(2)将来自192.168.10.0/24的数据包指向这个链(3)每分钟记录一次日志(4)设置该链的规则为DROP(5)重载firewalld清空直接规则富语言示例(1)允许连接http,并使用审核每分钟记录一次(2)测试(3)将192.168.10.202地址加入白名单,允许该主机的ipv4......
  • nginx https配置& proxy_protocol协议配置
    server{ listen8100proxy_protocol; set_real_ip_from0.0.0.0/0; real_ip_headerproxy_protocol; location/{ proxy_set_headerX-Real-IP$proxy_protocol_addr;proxy_set_headerX-Forwarded-For$proxy_protocol_addr; proxy_passh......