C#模拟网络POST请求
发布时间:2020-12-15 17:58:56 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 using System; using System.IO; using System.Net; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions;
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 using System; using System.IO; using System.Net; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; namespace scan { public class zzHttp { private const string sContentType = "application/x-www-form-urlencoded"; private const string sUserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; public static string Send(string data,string url) { return Send(Encoding.GetEncoding("UTF-8").GetBytes(data),url); } public static string Send(byte[] data,string url) { Stream responseStream; HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; if (request == null) { throw new ApplicationException(string.Format("Invalid url string: {0}",url)); } // request.UserAgent = sUserAgent; request.ContentType = sContentType; request.Method = "POST"; request.ContentLength = data.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(data,data.Length); requestStream.Close(); try { responseStream = request.GetResponse().GetResponseStream(); } catch (Exception exception) { throw exception; } string str = string.Empty; using (StreamReader reader = new StreamReader(responseStream,Encoding.GetEncoding("UTF-8"))) { str = reader.ReadToEnd(); } responseStream.Close(); return str; } #region 同步通过POST方式发送数据 /// <summary> /// 通过POST方式发送数据 /// </summary> /// <param name="Url">url</param> /// <param name="postDataStr">Post数据</param> /// <param name="cookie">Cookie容器</param> /// <returns></returns> public string SendDataByPost(string Url,string postDataStr,ref CookieContainer cookie) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); if (cookie.Count == 0) { request.CookieContainer = new CookieContainer(); cookie = request.CookieContainer; } else { request.CookieContainer = cookie; } request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postDataStr.Length; //request.Timeout = 1000; //request.ReadWriteTimeout = 3000; Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312")); myStreamWriter.Write(postDataStr); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } #endregion #region 同步通过GET方式发送数据 /// <summary> /// 通过GET方式发送数据 /// </summary> /// <param name="Url">url</param> /// <param name="postDataStr">GET数据</param> /// <param name="cookie">Cookie容器</param> /// <returns></returns> public string SendDataByGET(string Url,ref CookieContainer cookie) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); if (cookie.Count == 0) { request.CookieContainer = new CookieContainer(); cookie = request.CookieContainer; } else { request.CookieContainer = cookie; } request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream,Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } #endregion public string zzget(string Url,string getdata,string type) { try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url + (getdata == "" ? "" : "?") + getdata); // Get the response instance. wReq.Method = "GET"; wReq.ContentType = "text/html;charset=UTF-8"; System.Net.WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); // Dim reader As StreamReader = New StreamReader(respStream) using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream,Encoding.GetEncoding(type))) { return reader.ReadToEnd(); } } catch (System.Exception ex) { //errorMsg = ex.Message; } return ""; } ///<summary> ///采用post发送请求 ///</summary> ///<param name="URL">url地址</param> ///<param name="strPostdata">发送的数据</param> ///<returns></returns> public string zzpost(string URL,IDictionary<string,Object> strPostdata,string strEncoding) { //IDictionary<string,Object> idc = new Dictionary<string,object>(); StringBuilder data = new StringBuilder(); foreach (KeyValuePair<string,Object> param in strPostdata) { data.Append(param.Key).Append("="); data.Append(param.Value.ToString()); data.Append("&"); } data.Remove(data.Length- 1,1); Encoding encoding = Encoding.Default; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.CookieContainer = new CookieContainer();//少了这句就不能登录 request.Method = "post"; request.Accept = "text/html,application/xhtml+xml,*/*"; request.ContentType = "application/x-www-form-urlencoded"; byte[] buffer = encoding.GetBytes(data.ToString()); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer,buffer.Length); /* request.ContentLength = data.Length; Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312")); myStreamWriter.Write(data); myStreamWriter.Close(); */ HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.GetEncoding(strEncoding))) { return reader.ReadToEnd(); } } /// <summary> /// 清除文本中Html的标签 /// </summary> /// <param name="Content"></param> /// <returns></returns> public static string ClearHtml(string Content) { Content = Zxj_ReplaceHtml("&#[^>]*;","",Content); Content = Zxj_ReplaceHtml("</?marquee[^>]*>",Content); Content = Zxj_ReplaceHtml("</?object[^>]*>",Content); Content = Zxj_ReplaceHtml("</?param[^>]*>",Content); Content = Zxj_ReplaceHtml("</?embed[^>]*>",Content); Content = Zxj_ReplaceHtml("</?table[^>]*>",Content); Content = Zxj_ReplaceHtml(" ",Content); Content = Zxj_ReplaceHtml("</?tr[^>]*>",Content); Content = Zxj_ReplaceHtml("</?th[^>]*>",Content); Content = Zxj_ReplaceHtml("</?p[^>]*>",Content); Content = Zxj_ReplaceHtml("</?a[^>]*>",Content); Content = Zxj_ReplaceHtml("</?img[^>]*>",Content); Content = Zxj_ReplaceHtml("</?tbody[^>]*>",Content); Content = Zxj_ReplaceHtml("</?li[^>]*>",Content); Content = Zxj_ReplaceHtml("</?span[^>]*>",Content); Content = Zxj_ReplaceHtml("</?div[^>]*>",Content); Content = Zxj_ReplaceHtml("</?td[^>]*>",Content); Content = Zxj_ReplaceHtml("</?script[^>]*>",Content); Content = Zxj_ReplaceHtml("(javascript|jscript|vbscript|vbs):",Content); Content = Zxj_ReplaceHtml("on(mouse|exit|error|click|key)",Content); Content = Zxj_ReplaceHtml("<?xml[^>]*>",Content); Content = Zxj_ReplaceHtml("</?[a-z]+:[^>]*>",Content); Content = Zxj_ReplaceHtml("</?font[^>]*>",Content); Content = Zxj_ReplaceHtml("</?b[^>]*>",Content); Content = Zxj_ReplaceHtml("</?u[^>]*>",Content); Content = Zxj_ReplaceHtml("</?i[^>]*>",Content); Content = Zxj_ReplaceHtml("</?strong[^>]*>",Content); Content = Zxj_ReplaceHtml(" ",Content); Regex r = new Regex(@"s+"); Content = r.Replace(Content,""); Content.Trim(); string clearHtml = Content; return clearHtml; } /// <summary> /// 清除文本中的Html标签 /// </summary> /// <param name="patrn">要替换的标签正则表达式</param> /// <param name="strRep">替换为的内容</param> /// <param name="content">要替换的内容</param> /// <returns></returns> private static string Zxj_ReplaceHtml(string patrn,string strRep,string content) { if (string.IsNullOrEmpty(content)) { content = ""; } Regex rgEx = new Regex(patrn,RegexOptions.IgnoreCase); string strTxt = rgEx.Replace(content,strRep); return strTxt; } } } 可以对一个地址发送POST请求可以获取COOKIE 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |