c# http put请求 通用http请求 post get put

POST 需要把 contentType 改为 application/x-www-form-urlencoded; charset=UTF-8

PUT  需要把 contentType 改为application/json

 

复制代码
/// <summary>
        /// 通用请求方法
        /// </summary>
        /// <param name="url"></param>
        /// <param name="datas"></param>
        /// <param name="method">POST GET PUT DELETE</param>
        /// <param name="contentType">"POST application/x-www-form-urlencoded; charset=UTF-8"</param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        public static string HttpRequest(string url, string data, string method = "PUT", string contentType = "application/json", Encoding encoding = null)
        {
byte[] datas = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);//data可以直接传字节类型 byte[] data,然后这一段就可以去掉 if (encoding == null) encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = method; request.Timeout = 150000; request.AllowAutoRedirect = false; if (!string.IsNullOrEmpty(contentType)) { request.ContentType = contentType; } if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); } Stream requestStream = null; string responseStr = null; try { if (datas != null) { request.ContentLength = datas.Length; requestStream = request.GetRequestStream(); requestStream.Write(datas, 0, datas.Length); requestStream.Close(); } else { request.ContentLength = 0; } using (HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse()) { Stream getStream = webResponse.GetResponseStream(); byte[] outBytes = ReadFully(getStream); getStream.Close(); responseStr = Encoding.UTF8.GetString(outBytes); } } catch (Exception) { throw; } finally { request = null; requestStream = null; } return responseStr; }
复制代码
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true; //总是接受  
        }
复制代码
 public static byte[] ReadFully(Stream stream)
        {
            byte[] buffer = new byte[512];
            using (MemoryStream ms = new MemoryStream())
            {
                while (true)
                {
                    int read = stream.Read(buffer, 0, buffer.Length);
                    if (read <= 0)
                        return ms.ToArray();
                    ms.Write(buffer, 0, read);
                }
            }
        }
复制代码

 

posted @   路边有一棵草  阅读(5031)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示