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 请求数据的更多相关文章

  1. C# http请求数据

    http中get和post请求的最大区别:get是通过URL传递表单值,post传递的表单值是隐藏到 http报文体中 http以get方式请求数据 /// <summary> /// g ...

  2. 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端

    原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...

  3. region URL请求数据

    #region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...

  4. C#中使用 HttpWebRequest 向网站提交数据

    HttpWebRequest 是 .NET 基类库中的一个类,在命名空间 System.Net 里,用来使用户通过 HTTP 协议和服务器交互. HttpWebRequest 对 HTTP 协议进行了 ...

  5. C#:使用WebRequest类请求数据

    本文翻译于:https://msdn.microsoft.com/en-us/library/456dfw4f(v=vs.110).aspx 下列程序描述的步骤用于从服务器请求一个资源,例如,一个We ...

  6. 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据

    获取WebBrowser全cookie [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true) ...

  7. C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

    C#实现通过HttpWebRequest发送POST请求实现网站自动登陆   怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数 ...

  8. C# 应用 - 使用 HttpWebRequest 发起 Http 请求

    helper 类封装 调用 1. 引用的库类 \Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.dll Syste ...

  9. 【原生态】Http请求数据 与 发送数据

    今天项目组小弟居然问我怎么用java访问特定的地址获取数据和发送请求 Http请求都是通过输入输出流来进行操作的,首先要制定GET或者POST,默认是GET,在安全和数据量较大情况下请使用post 根 ...

随机推荐

  1. Node.js创建自签名的HTTPS服务器

    https://cnodejs.org/topic/54745ac22804a0997d38b32d  用Node.js创建自签名的HTTPS服务器  发布于 4 年前  作者 eeandrew  6 ...

  2. 玩转单元測试之DBUnit

    本文同一时候发表在:http://www.cnblogs.com/wade-xu/p/4547381.html DBunit 是一种扩展于JUnit的数据库驱动測试框架,它使数据库在測试过程之间处于一 ...

  3. Java生成带logo 的二维码

    这个工具类主要实现了两点功能: 1. 生成任意文链接的二维码. 2. 在二维码的中间加入图像. 主要实现步骤: 第一步: 导入QR二维码3.0 版本的core包和一张jpg图片(logo). core ...

  4. P2030 遥控车

    P2030 遥控车 2通过 11提交 题目提供者LittleZ 标签二分字符串递推高精洛谷原创 难度尚无评定 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 平平带着韵韵来到了游乐园,看 ...

  5. 【HAOI 2007】 理想的正方形

    [题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 1010 co ...

  6. 关于Flask的默认session

    Flask的默认session利用了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie里了. 过期时间是通过cookie的过期时间实现的 ...

  7. [Advance] How to debug a program (上)

    Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for “examine” ...

  8. openstack 配置dnsmasq 域名解析

  9. div标签的闭合检查

    什么叫DIV标签有没有闭合呢?有<div>开头就应该有</div>来结尾闭合了.有时候写代码写 了<div>,忘记</div>结尾,谓之没有闭合也. 如 ...

  10. ubuntu/linuxmint如何添加和删除PPA源

    [添加] 1.sudo add-apt-repository ppa:user/ppa-name 2.sudo apt-get update (然后再安装软件sudo apt-get install ...