C# client向server 发送Get和Post数据方式

从客户端向服务端get或者post 数据,如果是网页的话,可以使用ajax,但是如果是客户端程序呢,又或者是在后台程序里向另一方发送数据呢,今天就来介绍2种方式。

1、WebClient

Get方式:

       public static string GetHttpData(string url)
        {
            WebClient wc = new WebClient();
            string res = wc.DownloadString(url);
            return res;
        }

 

Post方式:

(1)以form表单发送

        public static string PostHttpData(string url, string begin_date, string end_date)
        {
            WebClient wc = new WebClient();
            string postString = string.Format("begin_date={0}&end_date={1}", begin_date, end_date);
            byte[] postData = Encoding.UTF8.GetBytes(postString);//编码,尤其是汉字,事先要看下抓取网页的编码方式            
            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可          
            try
            {
                byte[] responseData = wc.UploadData(url, "POST", postData);//得到返回字符流                    
                string resStr = Encoding.UTF8.GetString(responseData);//解码  
                return resStr;
            }
            catch (Exception ex)
            {
                return "";
            }
        }

服务端处理

        protected void Page_Load(object sender, EventArgs e)
        {          
            string subject = Request["subject"];
            string mailid = Request["mailid"];
            string content = Request["content"];
            if (!string.IsNullOrEmpty(subject) && !string.IsNullOrEmpty(mailid) && !string.IsNullOrEmpty(content))
            {
                Response.Write(subject.ToString() + "======" + mailid.ToString() + "======" + content.ToString());
            }
            else
            {
                Response.Write("111111");
            }

           
        }

 

(以json发送)

        public static string PostHttpData(string url, string begin_date, string end_date)
        {
            WebClient wc = new WebClient();
            string postString = "{\"begin_date\":\"" + begin_date + "\",\"end_date\":\"" + end_date + "\"}";
            byte[] postData = Encoding.UTF8.GetBytes(postString);//编码,尤其是汉字,事先要看下抓取网页的编码方式            
            wc.Headers.Add("Content-Type", "application/json");        
            try
            {
                byte[] responseData = wc.UploadData(url, "POST", postData);//得到返回字符流                    
                string resStr = Encoding.UTF8.GetString(responseData);//解码  
                return resStr;
            }
            catch (Exception ex)
            {
                return "";
            }
        }

服务端处理(读出来的就是json字符串而已,因此,即使用form形式发送,在服务端这么接受也行)

        protected void Page_Load(object sender, EventArgs e)
        {
            using (var reader = new System.IO.StreamReader(Request.InputStream))
            {
                string xmldata = reader.ReadToEnd();

                if (!string.IsNullOrEmpty(xmldata))
                {
                    Response.Write(xmldata);
                }
            }
        }

 

另一种post方式

private static void PostData(string data, string url, int count)
        {
            byte[] postData = System.Text.Encoding.UTF8.GetBytes(data);

            // 设置提交的相关参数   
            System.Net.HttpWebRequest request = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
            System.Text.Encoding myEncoding = System.Text.Encoding.UTF8;
            request.Method = "POST";
            request.ContentType = "text/plain";
            request.UserAgent = "curl/7.12.1";
            request.ContentLength = postData.Length;

            // 提交请求数据   
            System.IO.Stream outputStream = request.GetRequestStream();
            outputStream.Write(postData, 0, postData.Length);
            outputStream.Close();

            System.Net.HttpWebResponse response;
            System.IO.Stream responseStream;
            System.IO.StreamReader reader;
            string srcString;
            response = request.GetResponse() as System.Net.HttpWebResponse;
            responseStream = response.GetResponseStream();
            reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("UTF-8"));
            srcString = reader.ReadToEnd();
            string result = srcString;   //返回值赋值  
            reader.Close();
            Tiexue.General.Exception.DebugFormat("第==={0}===次推送完成,返回结果是==={1}================", count, result);
        }

 

posted on 2017-09-29 11:45  奔游浪子  阅读(274)  评论(0)    收藏  举报

导航