C# POST与Get数据

引用DLL

普通Get数据和Post数据

 1    public static string Get(string URL)
 2         {
 3             String ReCode = string.Empty;
 4             try
 5             {
 6                 HttpWebRequest wNetr = (HttpWebRequest)HttpWebRequest.Create(URL);
 7                 HttpWebResponse wNetp = (HttpWebResponse)wNetr.GetResponse();
 8                 wNetr.ContentType = "text/html";
 9                 wNetr.Method = "Get";
10                 Stream Streams = wNetp.GetResponseStream();
11                 StreamReader Reads = new StreamReader(Streams, Encoding.UTF8);
12                 ReCode = Reads.ReadToEnd();
13 
14                 //封闭临时不实用的资料 
15                 Reads.Dispose();
16                 Streams.Dispose();
17                 wNetp.Close();
18             }
19             catch (Exception ex) { throw ex; }
20 
21             return ReCode;
22 
23         }
24 
25         public static string Post(string url, string data)
26         {
27             string returnData = null;
28             try
29             {
30                 //byte[] buffer = Encoding.UTF8.GetBytes(data);
31                 //HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
32                 //webReq.Method = "POST";
33                 //webReq.ContentType = "application/x-www-form-urlencoded";
34                 //webReq.ContentLength = buffer.Length;
35                 //Stream postData = webReq.GetRequestStream();
36                 //webReq.Timeout = 99999999;
37                 ////webReq.ReadWriteTimeout = 99999999;
38                 //postData.Write(buffer, 0, buffer.Length);
39                 //postData.Close();
40                 //HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();
41                 //Stream answer = webResp.GetResponseStream();
42                 //StreamReader answerData = new StreamReader(answer);
43                 //returnData = answerData.ReadToEnd();
44 
45                 string strURL = url;
46                 System.Net.HttpWebRequest request;
47                 request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
48                 request.Method = "POST";
49                 request.ContentType = "application/json;charset=UTF-8";
50                 string paraUrlCoded = data;
51                 byte[] payload;
52                 payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
53                 request.ContentLength = payload.Length;
54                 Stream writer = request.GetRequestStream();
55                 writer.Write(payload, 0, payload.Length);
56                 writer.Close();
57                 System.Net.HttpWebResponse response;
58                 response = (System.Net.HttpWebResponse)request.GetResponse();
59                 System.IO.Stream s;
60                 s = response.GetResponseStream();
61                 string StrDate = "";
62                 string strValue = "";
63                 StreamReader Reader = new StreamReader(s, Encoding.UTF8);
64                 while ((StrDate = Reader.ReadLine()) != null)
65                 {
66                     strValue += StrDate + "
";
67                 }
68                 returnData = strValue;
69             }
70             catch
71             {
72                 return "获取错误";
73             }
74             return returnData.Trim() + "
";
75         }
76         /// <summary>
77         /// 将json数据反序列化为Dictionary
78         /// </summary>
79         /// <param name="jsonData">json数据</param>
80         /// <returns></returns>
81         public static Dictionary<string, object> JsonToDictionary(string jsonData)
82         {
83             //实例化JavaScriptSerializer类的新实例。。。需要添加 System.Web.Extensions引用
84             JavaScriptSerializer jss = new JavaScriptSerializer();
85             try
86             {
87                 //将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
88                 return jss.Deserialize<Dictionary<string, object>>(jsonData);
89             }
90             catch (Exception ex)
91             {
92                 throw new Exception(ex.Message);
93             }
94         }

HTTPS POST

class ProgramTest
{
    static void Main(string[] args)
    {
        string url = "https://www.test.com";
        string result = PostUrl(url, "key=123"); // key=4da4193e-384b-44d8-8a7f-2dd8b076d784
        Console.WriteLine(result);
        Console.WriteLine("OVER");
        Console.ReadLine();
    }

    private static string PostUrl(string url, string postData)
    {
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
        {
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            request.ProtocolVersion = HttpVersion.Version11;
         // 这里设置了协议类型。
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;// SecurityProtocolType.Tls1.2; 
            request.KeepAlive = false;
            ServicePointManager.CheckCertificateRevocationList = true;
            ServicePointManager.DefaultConnectionLimit = 100;
            ServicePointManager.Expect100Continue = false;
        }
        request.Method = "POST";    //使用get方式发送数据
        request.ContentType = "application/x-www-form-urlencoded";
        request.Referer = null;
        request.AllowAutoRedirect = true;
        request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
        request.Accept = "*/*";

        byte[] data = Encoding.UTF8.GetBytes(postData);
        Stream newStream = request.GetRequestStream();
        newStream.Write(data, 0, data.Length);
        newStream.Close();

        //获取网页响应结果
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream stream = response.GetResponseStream();
        //client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        string result = string.Empty;
        using (StreamReader sr = new StreamReader(stream))
        {
            result = sr.ReadToEnd();
        }

        return result;
    }

    private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
        return true; //总是接受  
    }
}

附.另外一个Post

public void Post()
{
 var d = new SendNews();
            d.touser = touser;
            d.agentid = "7";
            d.Description = wxmsg;

            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:47870/");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = client.PostAsJsonAsync("api/SendMsg/SendNews", d).Result; 
}


   public class SendNews 
        {
            /// <summary>
            /// UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送 
            /// </summary>
            public string touser { get; set; }
            /// <summary>
            /// PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数
            /// </summary>
            public string toparty { get; set; }
            /// <summary>
            /// TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数 
            /// </summary>
            public string totag { get; set; }
            /// <summary>
            /// 消息类型
            /// </summary>
            public string msgtype { get; set; }
            /// <summary>
            /// 企业应用的id,整型。可在应用的设置页面查看 
            /// </summary>
            public string agentid { get; set; }

            /// <summary>
            /// 表示是否是保密消息,0表示否,1表示是,默认0 
            /// </summary>
            public string safe { get; set; }


            /// <summary>
            /// 文章标题
            /// </summary>
            public string Title { get; set; }
            /// <summary>
            /// 文章描述
            /// </summary>
            public string Description { get; set; }
            /// <summary>
            /// 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
            /// </summary>
            public string PicUrl { get; set; }
            /// <summary>
            /// 点击图文消息跳转链接
            /// </summary>
            public string Url { get; set; }
        }

键值对提交

        //重点!! 成功 利用Webclient Post 按字段的方式提交每个字段的内容给服务器端 
        public string WebClientPost(string url, System.Collections.Specialized.NameValueCollection PostVars)
        {
            try
            {
                System.Net.WebClient WebClientObj = new System.Net.WebClient();
                byte[] byRemoteInfo = WebClientObj.UploadValues(url, "POST", PostVars);
                //下面都没用啦,就上面一句话就可以了
                string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo);
                return sRemoteInfo;

            }
            catch
            {
                return "";
            }
        }

        public void test()
        {
            System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();
            PostVars.Add("test", "value");
            PostVars.Add("cmd", "value");
            PostVars.Add("token", "value");
            WebClientPost("url", PostVars);
        }