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. react-color 颜色选择器组件

    demo链接:github demo 安装: npm install react-color --save 有一下几种类型组件 <AlphaPicker /> <BlockPicke ...

  2. C/C++生成可执行文件过程

    编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序.编译的 ...

  3. HTTP要点概述:十,内容协商

    一,内容协商(Content Negotiation) 同一个Web网站可能存在很多份相同内容的页面,比如英文版和中文版的Web页面,它们内容上相同,但是使用语言不同.比如大家进入英文版的google ...

  4. CPU上电时序详细分析

    首先是RTC电源,这部分电力是永远不关闭的,除非电池(纽扣电池)没电并且没接任何外部电源(比如电池和电源适配器). RTC用以保持机器内部时钟的运转和保证CMOS配置信息在断电的情况下不丢失:其次,在 ...

  5. 在mac上安装gradle(超详细,直接按步骤操作即可轻松搞定)

    第一步, 就是先download最新版本的gradle,网址如下: http://gradle.org/gradle-download/ 然后将下载下来的zip包放解压到本地任意的路径上, 例如,我本 ...

  6. iOS 证书详解

    引言 关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一个iOS开发小白 ...

  7. ThinkAndroid框架

    ThinkAndroid简介 ThinkAndroid是一个免费的开源的.简易的.遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单.快速的进行 Android应用程序的开发,包 ...

  8. poj 2186(tarjan+缩点)

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 37083   Accepted: 15104 De ...

  9. [Pa2013]Iloczyn

    https://www.zybuluo.com/ysner/note/1300802 题面 给定正整数\(n\)和\(k\),问能否将\(n\)分解为\(k\)个不同正整数的乘积. \(n\leq10 ...

  10. Java Graphics2D类的绘图方法

    Graphics2D继承自Graphics,它扩展了Graphics的绘图功能,拥有更强大的二维图形处理能力,提供对几何形状.坐标转换.颜色管理以及文字布局等更精确的控制. Graphics2D定义了 ...