首页 > 编程语言 >c#http请求

c#http请求

时间:2024-02-05 09:57:03浏览次数:29  
标签:dataStream http 请求 Encoding c# request content null string

一、HttpWebRequest

 public string  Post(string url, string data) 
        {  
            Stream dataStream = null;
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            StreamReader reader = null;
            try
            {
                byte[] dataArray = Encoding.GetEncoding("utf-8").GetBytes(data);
                //创建请求
                request = (HttpWebRequest)HttpWebRequest.Create(url);

                request.Credentials = CredentialCache.DefaultCredentials;
                request.CookieContainer = new CookieContainer();
                request.Method = "POST";
                request.ContentType = "application/json";//访问规则
                request.ContentLength = dataArray.Length;//数据长度
                dataStream = request.GetRequestStream();
                dataStream.Write(dataArray, 0, dataArray.Length);
                response = (HttpWebResponse)request.GetResponse();//获取返回值
                reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                return reader.ReadToEnd();
            }
            catch (Exception ex)
            {
              
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                if (response != null)
                    response.Close();
                if (dataStream != null)
                    dataStream.Close();
                if (request != null)
                    request.Abort();
            }

            return "";
        }

二、HttpClient

   public  string Post(string Url, List<KeyValuePair<string, string>> paramArray, string ContentType = "application/x-www-form-urlencoded", string authcode = "")
        {
            string result = "";
            var postData = BuildParam(paramArray);
            var data = Encoding.ASCII.GetBytes(postData);
            try
            {
                using (HttpClient http = new HttpClient())
                {
                    http.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
                    http.DefaultRequestHeaders.Add("Accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
                    HttpResponseMessage message = null;
                    using (Stream dataStream = new MemoryStream(data ?? new byte[0]))
                    {
                        using (HttpContent content = new StreamContent(dataStream))
                        {
                            content.Headers.Add("Content-Type", ContentType);
                            content.Headers.Add("auth_code", authcode);
                            var task = http.PostAsync(Url, content);
                            message = task.Result;
                        }
                    }
                    if (message != null && message.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        using (message)
                        {
                            result = message.Content.ReadAsStringAsync().Result;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return result;
        }

        private  string BuildParam(List<KeyValuePair<string, string>> paramArray, Encoding encode = null)
        {
            string url = "";

            if (encode == null) encode = Encoding.UTF8;

            if (paramArray != null && paramArray.Count > 0)
            {
                var parms = "";
                foreach (var item in paramArray)
                {
                    parms += string.Format("{0}={1}&", Encode(item.Key, encode), Encode(item.Value, encode));
                }
                if (parms != "")
                {
                    parms = parms.TrimEnd('&');
                }
                url += parms;

            }
            return url;
        }
        private static string Encode(string content, Encoding encode = null)
        {
            if (encode == null) return content;

            return System.Web.HttpUtility.UrlEncode(content, Encoding.UTF8);
        }

 

标签:dataStream,http,请求,Encoding,c#,request,content,null,string
From: https://www.cnblogs.com/ming-long/p/18007427

相关文章

  • Irrlicht 小记
    1.irrlicht名称空间下包含corescenevideoiogui2.irrlicht的事件可以监听页面事件、鼠标事件、按键事件——但是具体响应根据程序结构有所区分(例子中的按键响应处理部分扔到了引擎循环部分;而界面响应通过记录场景指针,直接在自定义场景响应类内进行的处理)3.irrlicht......
  • 客户案例分享——大型装备制造企业的CRM应用
    本期,小Z为大家带来的CRM管理系统客户案例是某大型装备制造企业运用ZohoCRM管理全球业务的过程分享。该企业是创业板上市公司,业务遍及100多个国家和地区,合作伙伴超百位,拥有覆盖全球的销售和服务网络。截止目前,相继获得国家知识产权优势企业、国家级专精特新“小巨人”企业等多项......
  • Unity基于C#事件委托机制
    事件委托是一种用于实现观察者模式的设计模式,它允许对象在发生特定事件时通知其他对象。在Unity中,事件委托机制为开发者提供了一种简单而有效的方式来处理游戏中的事件和交互。一、事件委托的基本概念事件委托是一种特殊的类型,它可以持有一个或多个方法的引用。当某个事件发生时......
  • vue的scoped中的class data-v-xxx生成规则为什么是按照文件的路径?
    Vue.js中,当在单文件组件(.vue文件)的<style>标签上使用scoped属性时,VueLoader会为组件中的CSS添加一个唯一的属性选择器,以确保样式只作用于当前组件内的元素。这个独特的属性通常格式为data-v-xxx,其中xxx是一个根据文件内容和路径生成的哈希值。生成规则基于文件内容和......
  • 阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。
    SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利。然而,当面临高并发场景时,理解并合理配置SpringBoot应用以达到最佳的并发处理能力至关重要。在SpringBoot中,应用程序对HTTP请求的并发处理主要依赖于内嵌的Servlet容器(如Tomcat)。接......
  • 如何访问SCI-Hub上的资源?
    答案:使用tor访问.onion网络资源。tor下载地址:https://www.torproject.org/如果不使用tor方式访问可能会无法访问,被提示:......
  • 文心一言 VS 讯飞星火 VS chatgpt (194)-- 算法导论14.3 2题
    二、用go语言,改写INTERVAL-SEARCH的代码,使得当所有区间都是开区间时,它也能正确地工作。文心一言,代码正常运行:在Go语言中,处理开区间(openintervals)时,我们需要特别注意区间的边界条件。开区间不包括其端点,因此在比较时不能使用等于(==)操作符。以下是一个使用Go语言实现的INTERVAL......
  • [转]TCP的keep-alive
    TCP的keep-alive可以在不增加服务器处理逻辑的前提下,检测客户端连接是否中断/proc/sys/net/ipv4/tcp_keepalive_time开始首次KeepAlive探测前的TCP空闭时间/proc/sys/net/ipv4/tcp_keepalive_intvl两次KeepAlive探测间的时间间隔/proc/sys/net/ipv4/tcp_keepalive_probes判定......
  • VMware Cloud Foundation (VCF) - 多云全栈基础架构组合解决方案
    VMwareCloudFoundation(VCF)-多云全栈基础架构组合解决方案fullstackinfrastructurewithaplatform请访问原文链接:https://sysin.org/blog/vmware-cloud-foundation/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwarebyBroadcom产品组合:VMwareCl......
  • 【DC渗透系列DC-4】
    主机发现arp-scan-l┌──(root㉿kali)-[~]└─#arp-scan-lInterface:eth0,type:EN10MB,MAC:00:0c:29:6b:ed:27,IPv4:192.168.100.251Startingarp-scan1.10.0with256hosts(https://github.com/royhills/arp-scan)192.168.100.100:50:56:c0:00:08......