闽公网安备 35020302035485号




HTTP-Version Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态码;Reason-Phrase表示状态码的文本描述。状态码由三位数字组成,第一个数字定义了响应的类别,且有5种可能取值:
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.IO.Compression;
5 using System.Linq;
6 using System.Net;
7 using System.Text;
8 using System.Threading.Tasks;
9
10 namespace Wolfy.LoginTest
11 {
12 public class Post
13 {
14 /// <summary>
15 /// 获得post请求后响应的数据
16 /// </summary>
17 /// <param name="postUrl">请求地址</param>
18 /// <param name="referUrl">请求引用地址</param>
19 /// <param name="data">请求带的数据</param>
20 /// <returns>响应内容</returns>
21 public string PostLogin(string postUrl, string referUrl, string data)
22 {
23 string result = "";
24 try
25 {
26 //命名空间System.Net下的HttpWebRequest类
27 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(postUrl);
28 //参照浏览器的请求报文 封装需要的参数 这里参照ie9
29 //浏览器可接受的MIME类型
30 request.Accept = "text/plain, */*; q=0.01";
31 //包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
32 request.Referer = referUrl;
33 //浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用
34 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)";
35 request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
36 //请求方式
37 request.Method = "POST";
38 //是否保持常连接
39 request.KeepAlive = false;
40 request.Headers.Add("Accept-Encoding", "gzip, deflate");
41 //表示请求消息正文的长度
42 request.ContentLength = data.Length;
43 44 Stream postStream = request.GetRequestStream();
45 byte[] postData = Encoding.UTF8.GetBytes(data);
46 //将传输的数据,请求正文写入请求流
47 postStream.Write(postData, 0, postData.Length);
48 postStream.Dispose();
49 //响应
50 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
51 //判断响应的信息是否为压缩信息 若为压缩信息解压后返回
52 if (response.ContentEncoding == "gzip")
53 {
54 MemoryStream ms = new MemoryStream();
55 GZipStream zip = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
56 byte[] buffer = new byte[1024];
57 int l = zip.Read(buffer, 0, buffer.Length);
58 while (l > 0)
59 {
60 ms.Write(buffer, 0, l);
61 l = zip.Read(buffer, 0, buffer.Length);
62 }
63 ms.Dispose();
64 zip.Dispose();
65 result = Encoding.UTF8.GetString(ms.ToArray());
66 }
67 return result;
68 }
69 catch (Exception)
70 {
71
72 throw;
73 }
74 }
75 }
76 }
请求中相关属性的值,你可以在浏览器,F12中,将对应的值,复制粘贴就可以,这东西不需要记。这里没有考虑cookie的,验证码的情况。