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 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 GetFormdata(Dictionary<string, string> dic, string ticks)
{
string Info = "";
string Head = string.Format("----------------------------{0}", ticks);
string Foot = string.Format("----------------------------{0}--", ticks);
foreach (var item in dic)
{
Info += string.Format("{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}\r\n", Head, item.Key, item.Value);
}
Info += Foot;
return Info;
}
#region formdata格式获取AccessToken
public static string PostAccessTokenByHttps()
{
try
{
string jsonlist = "";
string access_token = "";
string Ticks = DateTime.Now.Ticks.ToString();
//从配置文件获取固定数据
string comid = System.Configuration.ConfigurationManager.AppSettings["HLYCompanyID"];
string comkey = System.Configuration.ConfigurationManager.AppSettings["HLYCompanyKey"];
string url = System.Configuration.ConfigurationManager.AppSettings["HLYJKTokenURL"];
HttpWebRequest request = null;
CookieContainer cookie = new CookieContainer();
//HTTPSQ请求
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.CookieContainer = cookie;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "POST";
//request.ContentType = "application/x-www-form-urlencoded";
//request.ContentType = "application/json;charset=UTF-8";
request.ContentType = string.Format("multipart/form-data; boundary=--------------------------{0}", Ticks);
request.UserAgent = DefaultUserAgent;
request.KeepAlive = true;
string source = comid + ':' + comkey;
**//注意Basic后面有空格**
string Authorization = "Basic " + Base64Encode(Encoding.UTF8, source);
request.Headers["Authorization"] = Authorization;
// request.Timeout = 300000;
//request.Headers["Cookie"] = "username=aaaaaa; Language=zh_CN";
//如果需要POST数据
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("grant_type", "client_credentials");
dic.Add("scope", "write");
//StringBuilder builder = new StringBuilder();
//int i = 0;
//foreach (var item in dic)
//{
// if (i > 0)
// builder.Append("&");
// builder.AppendFormat("{0}={1}", item.Key, item.Value);
// i++;
//}
string Paramter = GetFormdata(dic, Ticks);
byte[] byteData = Encoding.UTF8.GetBytes(Paramter);
int length = byteData.Length;
request.ContentLength = length;
ServicePointManager.Expect100Continue = false; //2022-12-05调接口时突然报500错误,加了这句就可以了。
//证书,要求.net framework 4.5.1及以上
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
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")))
{
jsonlist = st.ReadToEnd().ToString();
// return st.ReadToEnd().ToString();
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonlist);
access_token = jo["access_token"].ToString();
}
return access_token;
}
catch (Exception ex)
{
string err = ex.Message;
return string.Empty;
}
}
#endregion
相关推荐
C# HttpClient核心用法与最佳实践指南
HTTP客户端是现代应用开发中的基础组件,用于实现服务间通信和API调用。在.NET生态中,HttpClient作为System.Net.Http的核心类,采用异步优先设计,支持线程安全复用和管道扩展。其技术价值体现在高效处理I/O密集型操作、简化HTTP协议交互以及支持RESTful架构。典型应用场景包括微服务调用、第三方API集成和数据抓取。本文重点解析C# HttpClient的生命周期管理、请求方法封装和性能优化技巧,特别是针对DNS更新问题和连接泄露等常见陷阱的解决方案。通过合理配置连接池和实现重
C# post form-data
【代码】C# post form-data。
Unity网络开发实战:使用RestClient简化RESTful API调用与架构设计
在现代软件开发中,前后端分离与数据交互是核心架构模式。RESTful API作为基于HTTP协议的标准设计风格,通过GET、POST、PUT、DELETE等方法对资源进行操作,实现了客户端与服务器之间的松耦合通信。其技术价值在于提供了一种统一、可扩展的接口规范,极大简化了跨平台应用的数据交换流程。在游戏开发、企业应用和数字孪生等场景中,高效、稳定的网络通信模块至关重要。Unity作为主流的跨平台开发引擎,其原生网络方案如UnityWebRequest功能全面但较为底层,开发者在处理JSON解析、错误处理和异
C# Post提交formdata类型数据-.Net Core
一、C# Post提交 formdata格式数据 form-data字典类型 key-value格式 字典格式 //form - data格式发送Post请求 Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("resp_type", "1"); dic.Add("upload_type", "1"); dic.Add("img_url", "http://www.jnqian
.NET C# MVC框架入门与实践指南
MVC(Model-View-Controller)是一种经典的软件架构模式,通过分离数据模型、用户界面和控制逻辑实现关注点分离。在.NET生态中,ASP.NET MVC框架基于C#语言构建,利用Razor视图引擎实现动态页面渲染,配合LINQ技术简化数据操作。该框架采用依赖注入设计,支持从单体应用到微服务的平滑演进,特别适合需要快速开发的企业级Web应用。通过Visual Studio工具链,开发者可以快速搭建包含身份验证、HTTPS等现代Web特性的项目,其约定优于配置的原则显著降低学习曲线。对于Jav
C# HttpClient手动构建multipart/form-data请求实现文件上传
在HTTP协议中,multipart/form-data是一种用于在单个请求体中发送多种类型数据的编码方式,其核心原理是通过唯一的边界符分隔文本字段和二进制文件。这种编码技术对于实现文件上传功能至关重要,尤其在需要同时传输表单数据和文件的场景中。从技术价值来看,掌握原生multipart/form-data构建能力使开发者能够深入理解HTTP请求的底层机制,提升在受限环境下的开发灵活性,并能更有效地调试复杂上传问题。在C#开发领域,通过HttpClient配合MultipartFormDataContent
C# 以Post方式multipart/form-data格式发送文件和参数
用C# 开发接口,接口需要上传文件,并且附带其他参数。
Remix框架全栈开发与AI应用实践指南
服务端渲染(SSR)与客户端渲染(CSR)是现代Web开发的核心技术,通过混合渲染模式解决SPA应用的SEO与首屏性能问题。Remix作为基于React的全栈框架,通过创新的嵌套路由系统和统一数据加载机制,实现了高效的并行数据流处理。在工程实践中,这种架构特别适合需要实时交互的AI应用场景,如动态加载GPT生成内容或处理DALL·E图像数据。框架内置的表单Action机制和错误边界处理,为开发者提供了开箱即用的API集成方案,同时其渐进增强特性确保基础功能在各类环境下稳定运行。
c#HTTP使用form-data发送请求
这个一直研究了很久,通过json字符串解析成键值对,再添加到Http请求中,经过测试可以正常接收数据。还有另一种简单的方法。
GLM-4.1V-Thinking:9B多模态模型的结构化推理能力解析
多模态大模型正从‘图文对齐’迈向‘联合推理’新阶段。传统双塔架构因模态语义空间割裂,难以支撑定位-提取-验证-推断等闭环推理任务;而具备Thinking能力的模型通过单路径联合表征、跨模态门控注意力与思维链蒸馏,实现了视觉与语言在底层的强耦合。其技术价值在于将复杂推理内化为可解析、可验证、可编程的原子操作,显著降低智能体开发中Orchestrator编排成本,并提升长文档理解、科学问题求解与边缘部署的工程鲁棒性。本文聚焦GLM-4.1V-Thinking的Thinking机制与多模态推理落地实践。
C#微信支付宝扫码支付源码全解析:从沙箱到回调的实战指南
在构建现代电商或线下收银系统时,支付集成是后端开发的核心环节,其关键在于理解支付流程的完整闭环与安全机制。从技术原理层面,支付系统依赖于非对称加密(如RSA2)和哈希算法(如MD5)进行签名验证,确保交易数据的完整性与不可抵赖性。其技术价值在于为业务提供稳定、安全的资金流转通道,是线上交易信任的基石。典型的应用场景包括电商网站、小程序、H5页面及线下门店收银系统,开发者需要处理从下单、生成二维码到异步通知的完整链路。本文基于一套经过实战检验的C#源码,深入拆解了微信与支付宝扫码支付集成的核心细节,特别是**
ajax 模拟表单提交,Ajax模拟Form表单提交,含多种数据上传
---恢复内容开始---Ajax提交表单、使用FormData提交表单数据和上传的文件(这里的后台使用C#获取,你可以使用Java一样获取)有时候前台的数据提交到后台,不想使用form表单上传,希望通过Ajax上传,那么怎么实现呢?前台页面:ClientCropIDSecretAppIDLogoSaveJS代码:$("#saveInfo").click(function () {var clien...
H5舌诊安卓集成实战:WebView拍照压缩与JSBridge架构设计
混合开发中,H5与原生容器的协作是移动应用快速迭代的关键路径。WebView作为承载H5页面的核心组件,其配置与桥接机制直接影响功能稳定性。JSBridge则打通了JavaScript与原生能力的双向通道,让相机调用、文件读取等系统能力得以在网页中无缝复用。在医疗健康类场景中,舌诊这类需要高质量图像采集与分析的应用,对H5端的图片压缩、传输效率及安卓碎片化适配提出了更高要求。从摄像头调用、图片方向矫正到服务端识别,构建一套完整的“H5业务层+安卓壳层+桥接层”架构,可有效支撑跨平台部署与热更新。本文结合中医
.NET 嵌入式Web服务器 EmbedIO v3 入门详解
EmbedIO 是一款适用于 C# 的轻量级、跨平台、模块化设计且采用 MIT 开源协议的 .NET Framework 与 .NET Core 嵌入式 Web 服务器。 EmbedIO3.0 对 Web 服务器处理请求的流程及 Web 模块的管道机制进行了全面重构。v2 用户可查阅 《EmbedIO v3 升级指南》 获取完整变更列表与迁移建议。
量化爬虫第一步:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向实战)
本文详细介绍了如何通过JS逆向技术破解同花顺问财数据接口的核心加密参数hexin-v,构建稳定可靠的量化数据采集方案。从抓包分析到Cookie Hook技术应用,再到环境补全与参数生成实现,手把手教你完成量化爬虫的第一步。文章还提供了实战注意事项与优化建议,帮助开发者规避常见问题。
SAP固定资产原值与净值取值逻辑全解析:从数据表到ABAP实战
在企业资源计划(ERP)系统中,固定资产的价值管理是财务会计的核心模块,其关键在于准确核算资产原值与净值。从技术原理上看,这涉及对资产全生命周期业务(如购置、折旧、转移、报废)的财务建模,以及底层数据表(如ANLC、ANEP)的精准关联与计算。掌握这一逻辑的技术价值在于,能够确保财务报表数据的准确性,满足合规性要求,并为管理决策提供可靠依据。在SAP ECC或S/4HANA系统的应用场景中,ABAP开发者与财务顾问常需通过编写报表程序,从复杂的数据结构中提取资产价值信息。本文聚焦于SAP资产会计模块,深入剖
Unity5.6 HTTP通信与内嵌Web视图实践:从原理到实战的完整指南
HTTP通信是现代客户端应用与服务器进行数据交换的基础技术,其核心原理基于请求-响应模型,通过GET、POST等方法实现资源获取与提交。在游戏开发领域,稳定的网络层是保障玩家体验和功能实现的关键,尤其在与Web服务集成或展示动态内容时。Unity引擎提供了WWW和UnityWebRequest等API来处理网络请求,其中UnityWebRequest凭借其更优的内存控制和精细的错误处理,成为构建健壮通信框架的首选。同时,在应用内嵌入Web视图(WebView)是实现混合内容呈现的常见方案,它允许在原生应用中
告别繁琐同步:Zotero与Obsidian双向联动新方案(基于Better BibTeX与MarkDBConnect)
本文详细介绍了一套基于Better BibTeX、Bibnotes Formatter和MarkDBConnect插件的Zotero与Obsidian双向联动方案。该方案通过建立智能数据通道,实现文献信息的自动同步与笔记的增量更新,解决了手动同步的繁琐问题,并支持在两大工具间无缝跳转,极大提升了科研和知识管理的工作效率。
Angular HttpClient深度指南:从模块配置到拦截器实战
HttpClient是Angular应用中处理HTTP通信的核心抽象,它并非简单封装fetch或XMLHttpRequest,而是基于依赖注入、可拦截、类型安全与响应式编程构建的声明式通信基础设施。其设计围绕@angular/common/http模块展开,依赖HttpClientModule注册服务链,通过HttpInterceptor实现横切逻辑编排,并以HttpErrorResponse统一错误分类。相比传统AJAX工具,它强调开发体验、可维护性与团队协作确定性,广泛应用于微前端通信层重构、JWT令牌
SAP 对接CBS(http方式)
CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...
第14.5章 高翔博士最新开源框架Lightning-LM源码解读(五):揭秘位姿图优化核心模块,从数学原理到代码实现
本文介绍了Lightning-LM框架中的位姿图优化(PGO)模块实现。该模块通过融合多源定位信息(激光定位、激光里程计、DR等),构建并优化位姿图来获得更精确的位姿估计。 主要内容包括: 模块概况与数据流程:初始化配置→添加PGO帧→分配位姿→优化求解→更新位姿→滑动窗口 16个核心函数详解:从构造函数到边缘化处理,涵盖完整的PGO工作流程 关键技术点:噪声参数设置、优化问题构建、约束添加、异常值处理等 关键数据结构:帧队列管理、顶点和边构建、优化统计信息收集 该PGO模块采用增量式优化方式,支持多种约束
global
【代码】global。
MATLAB基础应用精讲-【深度强化学习】SAC(Soft Actor-Critic)算法(附MATLAB和python代码实现)
Actor 网络:用于选择动作。Critic 1 和 Critic 2 网络:用于估计 Q 值。Target Critic 1 和 Target Critic 2:与 Critic 网络架构相同,用于生成更稳定的目标 Q 值。,即在保证探索的情况下选择高价值动作。软更新目标 Q 网络参数,使得目标网络参数缓慢向当前网络靠近,避免振荡。
ASP.NET Forms身份认证原理与安全实践
Forms身份认证是ASP.NET中基于Cookie的声明式认证机制,其核心在于通过加密票据(FormsAuthenticationTicket)在HTTP无状态环境中建立可信会话。它依赖machineKey密钥进行AES/HMACSHA256加解密,确保票据不可伪造、不可篡改;结合HttpOnly、Secure、slidingExpiration等配置实现基础安全防护。该机制虽被现代JWT替代,但在政府、金融等遗留系统中仍广泛用于可控、稳定的身份边界管控,尤其适用于需深度定制用户数据(userData)、
静态时序分析—门控时钟检查(clock gating check)
clock gating check的条件与类型
【永磁同步电机】simulink永磁同步电机PMSM矢量控制【含Matlab源码 7372期】
simulink永磁同步电机PMSM矢量控制 完整的代码,方可运行;可提供运行操作视频!适合小白!
401



被折叠的 条评论
为什么被折叠?



