zoukankan      html  css  js  c++  java
  • 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);
            }
    慎于行,敏于思!GGGGGG
  • 相关阅读:
    设计模式——原型模式
    设计模式——复合模式
    设计模式——桥接模式
    建筑模式
    设计模式——单键模式
    工厂模式
    抽象工厂
    设计模式——适配器模式
    一个简单的文件上传功能控件(原创)
    算法题:用php生成excel列
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/4566286.html
Copyright © 2011-2022 走看看