C# https post json格式调用接口

C#实战:使用HttpClient高效发送JSON格式POST请求 本文详细介绍了在C#中使用HttpClient高效发送JSON格式POST请求的实战方法。从基础配置、JSON数据准备与序列化,到请求发送与响应处理,全面解析了最佳实践和高级技巧,包括IHttpClientFactory的使用和异常处理策略,帮助开发者提升API通信效率与稳定性。 阅读详情
using Newtonsoft.Json.Linq;

using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using Newtonsoft.Json;
using System.IO;
using System.Net;

 private static readonly string DefaultUserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36";
        // private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        //{
        //     return true; //总是接受   
        // }
        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }
        public static string Base64Encode(Encoding encodeType, string source)
        {
            string encode = string.Empty;
            byte[] bytes = encodeType.GetBytes(source);
            try
            {
                encode = Convert.ToBase64String(bytes);
            }
            catch
            {
                encode = source;
            }
            return encode;
        }

  public static string PostToYS(string access_token, string account, string year, string ystype)
        {
            try
            {
                string returnjsonlist = "";
                var dataset = HLYSetCode.FindAll("", "", "", 0, 0);
                string url = System.Configuration.ConfigurationManager.AppSettings["HLYGetYSURL"];
                JObject patientinfo = new JObject();
                JObject patientinfolist = new JObject();
                JArray queryLineList1 = new JArray();
                JArray queryLineList2 = new JArray();
                JArray queryParameterList1 = new JArray();
                JArray queryParameterList2 = new JArray();
                JObject user = new JObject();
                JObject user1 = new JObject();
                JObject userB = new JObject();
                JObject userB1 = new JObject();
                user1["parameterValueCode"] = account + ystype;
                queryParameterList1.Add(user1);
                user["parameterType"] = "BGT_RULE_PARAMETER_BUDGET";
                user["parameterCode"] = "BUDGET_ITEM";
                //user["isAll"] = "false";
                //user["parameterType"] = dataset[0].ParameterType;
                //user["parameterCode"] = dataset[0].ParameterCode;
                user["isAll"] = dataset[0].IsAll;
                user["queryParameterList"] = queryParameterList1;
                queryLineList1.Add(user);

                userB1["parameterValueCode"] = ystype;
                queryParameterList2.Add(userB1);
                userB["parameterType"] = "BGT_RULE_PARAMETER_DIM";
                userB["parameterCode"] = "2";
                userB["isAll"] = "false";
                userB["queryParameterList"] = queryParameterList2;
                queryLineList1.Add(userB);
                //patientinfo["companyCode"] = "001";
                //patientinfo["organizationCode"] = "01";
                //patientinfo["scenarioCode"] = "1";
                //patientinfo["versionCode"] = "1";
                //patientinfo["structureCode"] = "777";
                //patientinfo["conditionCode"] = "001";
                //patientinfo["conditionName"] = "申万菱信控制策略";
                //patientinfo["periodSummaryFlag"] = true;
                //patientinfo["amountQuarterFlag"] = "AMOUNT";
                patientinfo["companyCode"] = dataset[0].CompanyCode;
                patientinfo["organizationCode"] = dataset[0].OrganizationCode;
                patientinfo["scenarioCode"] = dataset[0].ScenarioCode;
                patientinfo["versionCode"] = dataset[0].VersionCode;
                patientinfo["structureCode"] = dataset[0].StructureCode;
                patientinfo["conditionCode"] = dataset[0].ConditionCode;
                patientinfo["conditionName"] = dataset[0].ConditionName;
                patientinfo["periodSummaryFlag"] = dataset[0].PeriodSummaryFlag;
                patientinfo["amountQuarterFlag"] = dataset[0].AmountQuarterFlag;
                patientinfo["yearLimit"] = year;
                patientinfo["periodLowerLimit"] = year + "-01";
                patientinfo["periodUpperLimit"] = year + "-12";
                //patientinfo["versionNumber"] = 2;
                patientinfo["versionNumber"] = Convert.ToInt32(dataset[0].VersionNumber);
                patientinfo["queryLineList"] = queryLineList1;
                //上面拼接json格式参数
                string body = JsonConvert.SerializeObject(patientinfo);
                //eg:  发送Url需要的格式:sendData={"ids":[123],"Name":小黑}
                HttpWebRequest request = null;
                CookieContainer cookie = new CookieContainer();
                 ServicePointManager.Expect100Continue = false; //2022-12-05调接口时突然报500错误,加了这句就可以了。
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;//证书,.net framework4.5以上
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  
                 ServicePointManager.CheckCertificateRevocationList = true;
                ServicePointManager.DefaultConnectionLimit = 100;
 
                request = WebRequest.Create(url) as HttpWebRequest;
                request.CookieContainer = cookie;
                request.ProtocolVersion = HttpVersion.Version11;
                request.Method = "POST";
                request.ContentType = "application/json";
                request.UserAgent = DefaultUserAgent;
                request.KeepAlive = true;
                request.Headers["Authorization"] = "Bearer " + access_token;
                
                byte[] byteData = Encoding.UTF8.GetBytes(body);
                int length = byteData.Length;
                request.ContentLength = length;
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(byteData, 0, byteData.Length);
                }
                var response = (HttpWebResponse)request.GetResponse();
                using (StreamReader st = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
                {
                    returnjsonlist = st.ReadToEnd().ToString();
                    // return st.ReadToEnd().ToString();
                    JObject jo = (JObject)JsonConvert.DeserializeObject(returnjsonlist);
                    access_token = jo["message"].ToString();
                }
                return returnjsonlist;
            }
            catch (Exception ex)
            {
                string err = ex.Message;
                return string.Empty;
            }
        }
C# POST JSON实战:HttpClient调用与常见坑全解析 在前后端分离与微服务架构大行其道的今天,接口调用是系统协作的基石。C#开发者对接REST API时,常遇到POST请求失败、服务器返回415或超时等问题。HTTP POST是向服务器提交数据的核心方式,而JSON作为轻量级数据交换格式,承载了大部分业务报文。要保证请求成功,必须理解请求体构造、字符编码、Content-Type对齐和JSON序列化规则。HttpClient是现代.NET环境中发起HTTP请求的首选客户端,配合System.Text.Json或Newtonsoft.Json可实现灵活的对象映射 阅读详情

相关推荐

C# HttpClient POST JSON实战:从协议原理到上位机接口对接避坑

HTTP POST是接口联调中最基础也最容易出错的环节,尤其是在C#上位机开发场景。理解POST请求本质上是传输文本流,JSON只是字符串的组织规则,才能正确处理Content-Type、UTF-8编码与请求体构造。HttpClient作为主流类库,其连接复用、超时控制与异步模型直接影响高并发上报稳定性。通过强类型序列化或JObject动态构造JSON,配合明确的鉴权Header与重试策略,可有效避免乱码、连接中断、反序列化失败等典型问题。从请求构造到响应解析,结合真实避坑案例与调试技巧,为C#开发者提供一

weixin_30086969的博客 308

C# 使用Http Post方式发送Json数据,只需二步。

C# 使用Http Post方式发送Json数据,只需二步。

Debug-123 7514

C#调用POST接口实战:从HttpClient到超时与异常排查

在前后端分离与Web API盛行的今天,HTTP接口调用已成为软件开发的基础技能,而POST请求则承载着登录、下单、文件上传等核心业务场景。理解POST的本质——请求头定义格式、请求体传递数据、响应码反映结果——是高效对接接口的前提。C#作为桌面应用与上位机开发的主流语言,借助HttpClient可以优雅地完成这些交互。然而,从设置正确的Content-Type到处理Token鉴权,从超时控制到避免Socket连接耗尽,每一步都隐藏着影响稳定性的细节。面对Connection reset、请求超时、中文乱码

weixin_33883104的博客 333

json复杂对象c语言,c#处理3种json数据的实例

网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋友。一、C#处理简单json数据json数据:{"result":"0","res_info":"ok","queryorder_info":"info"}我这里是以jsonmy1.txt文件的形式保...

weixin_29932857的博客 554

C# HTTP POST JSON实战:Content-Type与幂等重试

HTTP POST 与 JSON 数据交互的核心不只是发送请求,而是围绕 Content-Type 媒体类型、字段命名映射和 JSON 序列化契约建立可验证的传输链路。HttpClient 生命周期、超时拆解与幂等重试决定连接复用效率和重复提交风险,直接影响第三方接口对接、订单查询及后台服务联调的稳定性。工程上通过统一客户端封装、业务码解析、日志脱敏与抓包回放校验,可减少 415/400 和“本地通、线上不通”类问题,让 C# JSON POST 从能跑到可维护、可排查。

weixin_34221654的博客 193

C# HTTP POST JSON实战:从HttpClient到连接复用与避坑指南

HTTP POST与JSON是系统间数据交互的主流方式。其原理是将业务对象序列化为JSON文本,通过POST请求体发送,服务端解析请求后返回JSON响应,实现跨语言、跨平台的数据交换。这种交互模式广泛应用于MES系统对接、设备扭矩数据上报、生产管理集成等工业与物联网场景。C#开发者在实现HTTP POST JSON时,需要关注HttpClient的正确使用、Content-Type与字符编码设置、JSON序列化方案选型,以及连接复用和超时重试等工程细节。常见问题包括本地调试正常但部署后超时、中文乱码、服务端

weixin_32520095的博客 297

[转]C#中POST数据和接收的几种方式

POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[""]来获取。 这里介绍另外一种POST方式和接收方式,就是将整个数据作为加入到数据流中提交和接收 接收方式: Stream s = System.Web.HttpContext.Current.Requ...

weixin_30323631的博客 686

C# http post jason简单示例

C# http post json简单示例,还有开源的Newtonsoft.Json

C#发送Get、Post请求,复杂参数格式(数组,对象,JSON,字典等)

发送HTTP请求时一般需要携带一些参数,简单的参数可以直接放到url中,但是一些复杂或者参数过多的情况下不适合放在url中,需要我们自己按标准组装参数格式,如下: using (var httpClient = new HttpClient()) { var url2 = new Uri("http://xxxxxx"); var body = new FormUrlEncodedContent(new Dictionary<

高彬的专栏 4588

C#基于Gecko 52自用浏览器,chrome风格选项卡多标签浏览器

自用浏览器基于Gecko52内核写的,基于Winform开发,仿Chrome式多选项卡,一个选项卡独立工具栏和显示网页模块,不是传统一个工具栏下面多个选项卡,可以弹出下载保存框,文件下载完有文件路径,是否打开文件提示,右键菜单全汉化,添加了垃圾回收处理的机制,不会产生Cache,多线程编译,没有黑屏现象,界面可以看看我的博客

Unity集成抖音小游戏:从IL2CPP配置到SDK接入全流程解析

本文详细解析了使用Unity开发抖音小游戏的完整流程。从关键的IL2CPP编译后端配置、PlayerSettings设置,到StarkSDK的接入与资源优化(如AutoStreaming),再到激励视频广告、录屏分享等核心功能的代码实现,提供了从环境准备到打包上传的全方位实战指南,帮助开发者高效完成技术适配。

weixin_27943395的博客 690

C# .Net 调用Java接口 Java api Post Json 格式字符串

用到的命名空间 using System.Net; 方法一: //url:POST请求地址 //postData:json格式的请求报文,例如:{"key1":"value1","key2":"value2"} public static string PostUrl(string url, string postData) ...

zr1982930的专栏 4972

OpenVox 8FXO板卡驱动安装记录

OpenVox A800P和A1200P的板卡驱动安装及问题解决方法

clliu的专栏 2463

c# Http Post访问接口方式

一、json格式数据提交返回 提交和返回数据都为json格式 参数提交方式:application/json;charset=UTF-8 统一采用UTF-8字符编码 public string Post(string Url, string jsonParas) { string strURL = Url; //创建一个H...

farmwang的专栏 1万+

树莓派4B学习笔记(5)—— 来个GPIO操作吧

一. GPIO库介绍 对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。 python 开发语言:python 简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。 wiring PI 开发语言:C、C++ 简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiring Pi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。

weixin_44415639的博客 8753

LabVIEW通过ActiveX控件实现与三菱FX5U PLC的高效数据交互

本文详细介绍了如何利用LabVIEW的ActiveX控件,通过三菱官方MX Component工具包实现与FX5U PLC的高效数据交互。文章从环境配置、控件插入到实战代码解析,系统讲解了连接建立、数据读写及资源释放的全流程,并提供了关键的避坑指南,帮助工程师快速构建稳定可靠的上位机通讯系统。

weixin_29197051的博客 373

C#模拟HTTP请求Post JSON

因为接口是http的,我们站点是https的,不能https直接ajax请求http,所以需要在SharePoint中开发一个模拟请求Ajax的Service,分享一下。 var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url"); httpWebRequest.ContentType = "applicatio...

cxu123321的博客 2023

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1923

bcb6通过https接口post数据_PHP开发APP接口实现

最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享:1. 客户端/服务器接口请求流程:安卓/IOS客户端 –> PHP接口 –> 服务器端 –> 数据处理 –> 返回值(客户端接收并处理)APP的通信方式:客户端 (接口地址:http://app.com/api.php?format=xml/json) 客户端APP ------------...

weixin_39703773的博客 339

C++(Qt)软件调试---内存分析工具Heob(26)

绝对最全面最详细的Heob使用说明。(图文并茂) 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异常捕获等)和内存泄漏的工具,集成到Qt Creator中,功能强大,简单容易上手。

mahuifa的博客 4312

MATLAB基础应用精讲-【数模应用】PPO算法(附python代码实现)(二)

表示为状态转移概率和动作选择概率的乘积,因为状态和动作决定轨迹。

qq_36130719的博客 413

C# 调用http和https请求rest接口通用操作类

之前在做C#调用Restful接口的时候,因为时间比较匆忙,一直没有把这个类好好整理一下。最近一方面对于ContentType的整理感觉很不方便,另一方面对于Restful接口http和https调用使用不同的类感觉很不方便,发现调用http和https只要用一句话就可以解决了。于是,整理一个通用类,记录下来,方便以后使用。 感谢网上各路大神提供的资料。 代码如下: using Sy

fox009521的专栏 2万+

使用强化学习快速让AI学会玩贪食蛇游戏(轻量级二十分钟训练+代码)

如何让AI玩会贪食蛇,甚至比你厉害概述构建问题(强化学习求解的一般步骤)环境动作定义状态定义奖励设计训练奖励值收敛图效果代码 概述 所用技术:强化学习(Deep Reinforcement Learning),属于一种无监督学习,利用奖励rewardrewardreward教会智能体AgentAgentAgent在合适的场景做合适的决策。 采用算法:试过两种算法D3QN和离散版本的PPO算法,最终采用离散版本PPO算法+GAE(PPO是我用过的性能最好的算法之一) 编程语言与深度学习框架:Python3.

ZYunfei的博客 2万+

.net 后台以post方式调用微信公众平台接口

1 public class Fresult 2 { 3 public int errcode { get; set; } 4 public string errmsg { get; set; } 5 public string msgid { get; set; } 6 } 1 public static Fr...

weixin_30809173的博客 525

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

c#-post访问链接提取json数据

本文使用.net core后端接口程序,实现向一个接口提交一个json数据,再从接口取到一个json数据。

PROBIE_的博客 1794

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# 创建json传输格式的http请求

publicstaticstringPostRequestTest(stringcontent,stringurl,stringcontentType="application/json") { try { varmemStream=newMemoryStream(); varcc...

weixin_33829657的博客 2260

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: C# https post formdata调用接口
下一篇: .NET C#基础知识整理
LuYanLin_
博客等级 码龄8年 19粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值