C# HttpWebRequest Post Get 请求数据
Post请求

1 //data
2 string cookieStr = "Cookie信息";
3 string postData = string.Format("userid={0}&password={1}", "参数1", "参数2");
4 byte[] data = Encoding.UTF8.GetBytes(postData);
5
6 // Prepare web request...
7 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.xxx.com");
8 request.Method = "POST";
9 //request.Referer = "https://www.xxx.com";
10 request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
11 request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";
12 //request.Host = "www.xxx.com";
13 request.Headers.Add("Cookie", cookieStr);
14 request.ContentLength = data.Length;
15 Stream newStream = request.GetRequestStream();
16
17 // Send the data.
18 newStream.Write(data, 0, data.Length);
19 newStream.Close();
20
21 // Get response
22 HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse();
23 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
24 string content = reader.ReadToEnd();
25 Console.WriteLine(content);
26 Console.ReadLine();


1 /// <summary>
2 /// 创建POST方式的HTTP请求
3 /// </summary>
4 /// <param name="url">请求的URL</param>
5 /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>
6 /// <param name="timeout">请求的超时时间</param>
7 /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
8 /// <param name="requestEncoding">发送HTTP请求时所用的编码</param>
9 /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
10 /// <returns></returns>
11 public static HttpWebResponse CreatePostHttpResponse(string url,IDictionary<string,string> parameters,int? timeout, string userAgent,Encoding requestEncoding,CookieCollection cookies)
12 {
13 if (string.IsNullOrEmpty(url))
14 {
15 throw new ArgumentNullException("url");
16 }
17 if(requestEncoding==null)
18 {
19 throw new ArgumentNullException("requestEncoding");
20 }
21 HttpWebRequest request=null;
22 //如果是发送HTTPS请求
23 if(url.StartsWith("https",StringComparison.OrdinalIgnoreCase))
24 {
25 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
26 request = WebRequest.Create(url) as HttpWebRequest;
27 request.ProtocolVersion=HttpVersion.Version10;
28 }
29 else
30 {
31 request = WebRequest.Create(url) as HttpWebRequest;
32 }
33 request.Method = "POST";
34 request.ContentType = "application/x-www-form-urlencoded";
35
36 if (!string.IsNullOrEmpty(userAgent))
37 {
38 request.UserAgent = userAgent;
39 }
40 else
41 {
42 request.UserAgent = DefaultUserAgent;
43 }
44
45 if (timeout.HasValue)
46 {
47 request.Timeout = timeout.Value;
48 }
49 if (cookies != null)
50 {
51 request.CookieContainer = new CookieContainer();
52 request.CookieContainer.Add(cookies);
53 }
54 //如果需要POST数据
55 if(!(parameters==null||parameters.Count==0))
56 {
57 StringBuilder buffer = new StringBuilder();
58 int i = 0;
59 foreach (string key in parameters.Keys)
60 {
61 if (i > 0)
62 {
63 buffer.AppendFormat("&{0}={1}", key, parameters[key]);
64 }
65 else
66 {
67 buffer.AppendFormat("{0}={1}", key, parameters[key]);
68 }
69 i++;
70 }
71 byte[] data = requestEncoding.GetBytes(buffer.ToString());
72 using (Stream stream = request.GetRequestStream())
73 {
74 stream.Write(data, 0, data.Length);
75 }
76 }
77 return request.GetResponse() as HttpWebResponse;
78 }
79 调用
80
81 string loginUrl = "https://passport.baidu.com/?login";
82 string userName = "userName";
83 string password = "password";
84 string tagUrl = "http://cang.baidu.com/"+userName+"/tags";
85 Encoding encoding = Encoding.GetEncoding("gb2312");
86
87 IDictionary<string, string> parameters = new Dictionary<string, string>();
88 parameters.Add("tpl", "fa");
89 parameters.Add("tpl_reg", "fa");
90 parameters.Add("u", tagUrl);
91 parameters.Add("psp_tt", "0");
92 parameters.Add("username", userName);
93 parameters.Add("password", password);
94 parameters.Add("mem_pass", "1");
95 HttpWebResponse response = HttpWebResponseUtility.CreatePostHttpResponse(loginUrl, parameters, null, null, encoding, null);
96 string cookieString = response.Headers["Set-Cookie"];

Get请求

1 /// <summary>
2 /// 创建GET方式的HTTP请求
3 /// </summary>
4 /// <param name="url">请求的URL</param>
5 /// <param name="timeout">请求的超时时间</param>
6 /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
7 /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
8 /// <returns></returns>
9 public static HttpWebResponse CreateGetHttpResponse(string url,int? timeout, string userAgent,CookieCollection cookies)
10 {
11 if (string.IsNullOrEmpty(url))
12 {
13 throw new ArgumentNullException("url");
14 }
15 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
16 request.Method = "GET";
17 request.UserAgent = DefaultUserAgent;
18 if (!string.IsNullOrEmpty(userAgent))
19 {
20 request.UserAgent = userAgent;
21 }
22 if (timeout.HasValue)
23 {
24 request.Timeout = timeout.Value;
25 }
26 if (cookies != null)
27 {
28 request.CookieContainer = new CookieContainer();
29 request.CookieContainer.Add(cookies);
30 }
31 return request.GetResponse() as HttpWebResponse;
32 }

1 string userName = "userName";
2 string tagUrl = "http://cang.baidu.com/"+userName+"/tags";
3 CookieCollection cookies = new CookieCollection();//如何从response.Headers["Set-Cookie"];中获取并设置CookieCollection的代码略
4 response = HttpWebResponseUtility.CreateGetHttpResponse(tagUrl, null, null, cookies);
C# HttpWebRequest Post Get 请求数据的更多相关文章
- C# http请求数据
http中get和post请求的最大区别:get是通过URL传递表单值,post传递的表单值是隐藏到 http报文体中 http以get方式请求数据 /// <summary> /// g ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
- region URL请求数据
#region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...
- C#中使用 HttpWebRequest 向网站提交数据
HttpWebRequest 是 .NET 基类库中的一个类,在命名空间 System.Net 里,用来使用户通过 HTTP 协议和服务器交互. HttpWebRequest 对 HTTP 协议进行了 ...
- C#:使用WebRequest类请求数据
本文翻译于:https://msdn.microsoft.com/en-us/library/456dfw4f(v=vs.110).aspx 下列程序描述的步骤用于从服务器请求一个资源,例如,一个We ...
- 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据
获取WebBrowser全cookie [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true) ...
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆 怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数 ...
- C# 应用 - 使用 HttpWebRequest 发起 Http 请求
helper 类封装 调用 1. 引用的库类 \Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.dll Syste ...
- 【原生态】Http请求数据 与 发送数据
今天项目组小弟居然问我怎么用java访问特定的地址获取数据和发送请求 Http请求都是通过输入输出流来进行操作的,首先要制定GET或者POST,默认是GET,在安全和数据量较大情况下请使用post 根 ...
随机推荐
- shell脚本 加密备份MySQL数据库
1.加密备份为.bak文件(实际只是个.zip文件) #!/bin/bash # $:IP地址 # $:用户名 # $:数据库密码 # $:数据库名 # $:加密密码 # $:备份文件名 mysqld ...
- Mycat(5):聊天消息表数据库按月分表实践,平滑扩展
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/47003577 未经博主同意不得转载. 1,业务需求 比方一个社交软件,比方像腾讯 ...
- Java小白手记:WEB项目等
机缘巧合之下,工作中得以用一下java.我向来对java很感兴趣,想从.NET转到java久矣,机会难得,久旱逢甘霖. 这次主要是跟web项目有关.在此之前,我了解到JAVA分为三大块:j2se.j2 ...
- JSP内建对象
① out - javax.servlet.jsp.jspWriter out对象用于把结果输出到网页上. 方法: 1. void clear() ; 清除输出缓冲区的内容,可是不输出到c ...
- 魏汝盼医学博士 - Judy Zhu Wei, M.D., F.A.C.O.G.
魏汝盼医学博士 - Judy Zhu Wei, M.D., F.A.C.O.G. 医院(诊所)名称:CAPRI妇产科诊所 妇产科,华人医生,微创妇科手术专科医生,女医生,fountai ...
- POJ2127 Greatest Common Increasing Subsequence
POJ2127 给定两个 整数序列,求LCIS(最长公共上升子序列) dp[i][j]表示A的A[1.....i]与B[1.....j]的以B[j]为结尾的LCIS. 转移方程很简单 当A[i]!=B ...
- RDA 重现率
文件目录: timing_info/AspectRatioOverscan&TimingTool/Aspect_Ratio_Overscan&Timing_Tool_330.xls 重 ...
- org.apache.poi.hssf.util.Region
从POI 3.18开始被Deprecated,在3.20版本中被移除了,所以3.20以前的都有 为了避免这个问题,用CellRangeAddress代替Region,其用法相同
- 面试官:聊一下你对MySQL索引实现原理?
在数据库中,如果索引太多,应用程序的性能可能会受到影响,如果索引太少,又会对查询性能产生影响.所以,我们要追求两者的一个平衡点,足够多的索引带来查询性能提高,又不因为索引过多导致修改数据等操作时负载过 ...
- (DP)51NOD 1118 机器人走方格
M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N,中间用空格隔开.( ...