当前位置: 首页 > news >正文

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

代码如下:

 

[csharp]  view plain  copy
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Net.Security;  
  6. using System.Security.Cryptography.X509Certificates;  
  7. using System.Net;  
  8. using System.IO;  
  9. using System.IO.Compression;  
  10. using System.Text.RegularExpressions;     
  11.   
  12. namespace HttpWebRequestDemo  
  13. {  
  14.     class Program  
  15.     {  
  16.         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)";  
  17.   
  18.         private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)  
  19.         {  
  20.             return true; //总是接受     
  21.         }  
  22.   
  23.         public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters,Encoding charset)  
  24.         {  
  25.             HttpWebRequest request = null;  
  26.             //HTTPSQ请求  
  27.             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);  
  28.             request = WebRequest.Create(url) as HttpWebRequest;  
  29.             request.ProtocolVersion = HttpVersion.Version10;  
  30.             request.Method = "POST";  
  31.             request.ContentType = "application/x-www-form-urlencoded";  
  32.             request.UserAgent = DefaultUserAgent;  
  33.             //如果需要POST数据     
  34.             if (!(parameters == null || parameters.Count == 0))  
  35.             {  
  36.                 StringBuilder buffer = new StringBuilder();  
  37.                 int i = 0;  
  38.                 foreach (string key in parameters.Keys)  
  39.                 {  
  40.                     if (i > 0)  
  41.                     {  
  42.                         buffer.AppendFormat("&{0}={1}", key, parameters[key]);  
  43.                     }  
  44.                     else  
  45.                     {  
  46.                         buffer.AppendFormat("{0}={1}", key, parameters[key]);  
  47.                     }  
  48.                     i++;  
  49.                 }  
  50.                 byte[] data = charset.GetBytes(buffer.ToString());  
  51.                 using (Stream stream = request.GetRequestStream())  
  52.                 {  
  53.                     stream.Write(data, 0, data.Length);  
  54.                 }  
  55.             }  
  56.             return request.GetResponse() as HttpWebResponse;  
  57.         }     
  58.   
  59.         static void Main(string[] args)  
  60.         {  
  61.             string url = "https://192.168.1.101/httpOrg/create";  
  62.             Encoding encoding = Encoding.GetEncoding("utf-8");  
  63.             IDictionary<string, string> parameters = new Dictionary<string, string>();  
  64.             parameters.Add("authuser", "*****");  
  65.             parameters.Add("authpass", "*****");  
  66.             parameters.Add("orgkey","*****");  
  67.             parameters.Add("orgname", "*****");  
  68.             HttpWebResponse response = Program.CreatePostHttpResponse(url,parameters,encoding);  
  69.             //打印返回值  
  70.             Stream stream = response.GetResponseStream();   //获取响应的字符串流  
  71.             StreamReader sr = new StreamReader(stream); //创建一个stream读取流  
  72.             string html = sr.ReadToEnd();   //从头读到尾,放到字符串html  
  73.             Console.WriteLine(html);   
  74.         }  
  75.     }  
  76. }  

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

request.Proxy = null;

不使用代理,即可。

相关文章:

  • windows中结束线程的方式
  • mogodb
  • 22次课(yum更换国内源、yum下载rpm包、源码包安装、把源码包打包成rpm包)
  • mybatis 延迟加载
  • Python基础学习四 列表、元组、字典、集合
  • Mysql添加更新删除数据-表
  • 如何在本地测试Fabric Code
  • 状态码 301 与 302的区别
  • RHEL6 搭建LVS/DR 负载均衡集群 案例
  • “-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数
  • Linux权限详解
  • Tomcat7 Redis Session共享
  • 练习题
  • C#Vs关于连接数据库的语句
  • openssl windows 生成公钥与私钥
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • @jsonView过滤属性
  • 【刷算法】从上往下打印二叉树
  • Android组件 - 收藏集 - 掘金
  • angular组件开发
  • css布局,左右固定中间自适应实现
  • ES6语法详解(一)
  • jQuery(一)
  • js操作时间(持续更新)
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Mithril.js 入门介绍
  • Python十分钟制作属于你自己的个性logo
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue官网教程学习过程中值得记录的一些事情
  • 成为一名优秀的Developer的书单
  • 深度学习中的信息论知识详解
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 网页视频流m3u8/ts视频下载
  • 微服务框架lagom
  • 我建了一个叫Hello World的项目
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • Python 之网络式编程
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (超详细)语音信号处理之特征提取
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (已解决)什么是vue导航守卫
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .Mobi域名介绍
  • .naturalWidth 和naturalHeight属性,
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [22]. 括号生成
  • [ActionScript][AS3]小小笔记
  • [Angularjs]asp.net mvc+angularjs+web api单页应用