C#利用HttpWebRequest进行post请求的示例(HTTPS)

C#利用HttpWebRequest进行post请求的示例(HTTPS)

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net.Security;

using System.Security.Cryptography.X509Certificates;

using System.Net;

using System.IO;

using System.IO.Compression;

using System.Text.RegularExpressions; 

namespace HttpWebRequestDemo

{

    class Program

    {

        private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";

        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

        {

            return true; //总是接受 

        }

        public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters,Encoding charset)

        {

            HttpWebRequest request = null;

            //HTTPSQ请求

            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

            request = WebRequest.Create(url) as HttpWebRequest;

            request.ProtocolVersion = HttpVersion.Version10;

            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";

            request.UserAgent = DefaultUserAgent;

            //如果需要POST数据 

            if (!(parameters == null || parameters.Count == 0))

            {

                StringBuilder buffer = new StringBuilder();

                int i = 0;

                foreach (string key in parameters.Keys)

                {

                    if (i > 0)

                    {

                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);

                    }

                    else

                    {

                        buffer.AppendFormat("{0}={1}", key, parameters[key]);

                    }

                    i++;

                }

                byte[] data = charset.GetBytes(buffer.ToString());

                using (Stream stream = request.GetRequestStream())

                {

                    stream.Write(data, 0, data.Length);

                }

            }

            return request.GetResponse() as HttpWebResponse;

        } 

        static void Main(string[] args)

        {

            string url = "https://192.168.1.101/httpOrg/create";

            Encoding encoding = Encoding.GetEncoding("utf-8");

            IDictionary<string, string> parameters = new Dictionary<string, string>();

            parameters.Add("authuser", "*****");

            parameters.Add("authpass", "*****");

            parameters.Add("orgkey","*****");

            parameters.Add("orgname", "*****");

            HttpWebResponse response = Program.CreatePostHttpResponse(url,parameters,encoding);

            //打印返回值

            Stream stream = response.GetResponseStream();  //获取响应的字符串流

            StreamReader sr = new StreamReader(stream); //创建一个stream读取流

            string html = sr.ReadToEnd();  //从头读到尾,放到字符串html

            Console.WriteLine(html);

        }

    }

}

HttpWebRequest默认会用代理进行连接,导致获取结果比较慢。解决办法是,配置:

request.Proxy = null;

不使用代理,即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,736评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,550评论 0 13
  • 英文文档,一开始我也是抗拒的,边翻译边看,也就花费了1个小时基本就阅读过了,我的英文基础其实很差。附上链接:链接:...
    lonecolonel阅读 10,081评论 3 1
  • 最近热播剧刷屏,作为跟女主基本同时代在北京待过的我,感觉剧情实在偏离现实,当然也是剧情效果需要吧,理解但不苟同。但...
    星懿如芷阅读 343评论 0 2
  • 心烦意乱,六神无主
    痛苦地享乐阅读 163评论 0 0