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); }
浙公网安备 33010602011771号