http协议-C#获取网页源代码

简介:

 

 
  1. 通过http协议C#获取网页源代码  
  2.  
  3. 方法一:  
  4.  
  5. using System.Text;  
  6. using System.Net;  
  7. private string getHtml(string url)  
  8. {  
  9. WebClient myWebClient = new WebClient();  
  10. byte[] myDataBuffer = myWebClient.DownloadData (url);  
  11. return Encoding.Default.GetString(myDataBuffer);  
  12. }  
  13.  
  14. 方法二:  
  15.  
  16. public string getHttp(string HttpUrl,string RefererUrl)  
  17. {  
  18. string html = "";  
  19. try  
  20. {  
  21. MSXML2.XMLHTTP Http = new MSXML2.XMLHTTPClass();  
  22. xmlhttp.open("GET", Url, false, null, null);  
  23. Http.open("GET",HttpUrl,false,null,null);  
  24. Http.setRequestHeader("Referer",RefererUrl);  
  25. //Http.setRequestHeader("Referer",RefererUrl);  
  26. Http.setRequestHeader("Content-Type", "text/html;charset=gb2312");  
  27. Http.send("");  
  28. html = Encoding.Default.GetString((byte[])Http.responseBody);  
  29. Http = null;  
  30. }  
  31. catch  
  32. {  
  33.  
  34. }  
  35. return html;  
  36. }  
  37.  
  38.    
  39.  
  40.    
  41.  
  42. public bool getweb(string strURL,out string buf)  
  43.   {  
  44.    buf="";  
  45.    try  
  46.    {  
  47.     //Uri url=new Uri(strURL,false);  
  48.     HttpWebRequest request;  
  49.     request = (HttpWebRequest)WebRequest.Create(strURL);  
  50.     request.Method="POST"; //Post请求方式  
  51.     request.ContentType="text/html;charset=gb2312"; //内容类型  
  52.     string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码  
  53.     byte[] payload;  
  54.     payload = System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节  
  55.     request.ContentLength = payload.Length; //设置请求的ContentLength  
  56.     Stream writer = request.GetRequestStream(); //获得请求流  
  57.     writer.Write(payload,0,payload.Length); //将请求参数写入流  
  58.     writer.Close(); //关闭请求流  
  59.     HttpWebResponse response;  
  60.     response = (HttpWebResponse)request.GetResponse(); //获得响应流  
  61.     Stream s;  
  62.     s = response.GetResponseStream();  
  63.     StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));  
  64.     string HTML = "";  
  65.     string sLine ="";  
  66.     int i = 0;  
  67.     while (sLine!=null)  
  68.     {  
  69.      i++;  
  70.      sLine = objReader.ReadLine();  
  71.      if (sLine!=null)  
  72.       HTML += sLine;  
  73.     }  
  74.     //HTMLHTML = HTML.Replace("&lt;","<");  
  75.     //HTMLHTML = HTML.Replace("&gt;",">");  
  76.     buf=HTML;  
  77.     return true;  
  78.    }  
  79.    catch (Exception x)  
  80.    {     
  81.     buf=x.Message.ToString();  
  82.     return false;      
  83.    }  
  84.   }  
  85.    
  86. 带Cookie:  
  87. CookieContainer cc = new CookieContainer();  
  88. public bool getweb(string strURL,out string buf)  
  89.   {  
  90.    buf="";  
  91.    try  
  92.    {  
  93.     HttpWebRequest request;  
  94.     request = (HttpWebRequest)WebRequest.Create(strURL);  
  95.     request.Method="POST"; //Post请求方式  
  96.     request.ContentType="text/html;charset=gb2312"; //内容类型  
  97.     string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码  
  98.     byte[] payload;  
  99.     payload = System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节  
  100.     request.ContentLength = payload.Length; //设置请求的ContentLength  
  101.     Stream writer = request.GetRequestStream(); //获得请求流  
  102.     writer.Write(payload,0,payload.Length); //将请求参数写入流  
  103.     writer.Close(); //关闭请求流  
  104.     HttpWebResponse response;  
  105.     response = (HttpWebResponse)request.GetResponse(); //获得响应流  
  106.     Stream s;  
  107.     s = response.GetResponseStream();  
  108.     StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));  
  109.     string HTML = "";  
  110.     string sLine ="";  
  111.     int i = 0;  
  112.     while (sLine!=null)  
  113.     {  
  114.      i++;  
  115.      sLine = objReader.ReadLine();  
  116.      if (sLine!=null)  
  117.       HTML += sLine;  
  118.     }   
  119.  
  120.     buf=HTML;  
  121.     return true;  
  122.    }  
  123.    catch (Exception x)  
  124.    {     
  125.     buf=x.Message.ToString();  
  126.     return false;      
  127.    }  
  128.   }  
  129.   public bool getweb(string strURL,out string buf,string postData)  
  130.   {  
  131.    buf="";  
  132.    try  
  133.    {     
  134.       
  135.     ASCIIEncoding encoding = new ASCIIEncoding();  
  136.     byte[] data = encoding.GetBytes(postData);  
  137.     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);  
  138.     request.Method = "POST";  
  139.     request.ContentType = "application/x-www-form-urlencoded";  
  140.     request.ContentLength = data.Length;  
  141.     Stream newStream = request.GetRequestStream();  
  142.     newStream.Write(data, 0, data.Length);  
  143.     newStream.Close();  
  144.                      
  145.     request.CookieContainer = cc;  
  146.                      
  147.     HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
  148.     cc.Add(response.Cookies);  
  149.     Stream stream = response.GetResponseStream();  
  150.     string sHtml = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();  
  151.     buf=sHtml;  
  152.     return true;  
  153.    }  
  154.    catch (Exception x)  
  155.    {     
  156.     buf=x.Message.ToString();  
  157.     return false;      
  158.    }  
  159.   }  
  160.  
  161. private   string   getWebresourceFile1(string   url)  
  162.     {  
  163.      
  164. WebClient   myWebClient   =   new   WebClient();      
  165. byte[]   myDataBuffer   =   myWebClient.DownloadData(url);  
  166. string   SourceCode   =   Encoding.Default.GetString(myDataBuffer);  
  167. saveSourceCode(SourceCode);  
  168.                   return   SourceCode;  
  169.       }  
  170.  
  171. 方法2  
  172. private   string   getWebresourceFile2(string   url)  
  173.     {  
  174. HttpWebRequest   request=(HttpWebRequest)WebRequest.Create(url);    
  175. HttpWebResponse   response=(HttpWebResponse)request.GetResponse();    
  176.                   request.Method   =   "GET ";          
  177. Stream   receiveStream=response.GetResponseStream();  
  178. StreamReader   readStream=new   StreamReader(receiveStream,Encoding.Default);  
  179. string   SourceCode=readStream.ReadToEnd();      
  180. saveSourceCode(SourceCode);  
  181. response.Close();        
  182. readStream.Close();  
  183. return   SourceCode;  
  184.  
  185.       }  
  186. 方法3  
  187. private   string   getWebresourceFile3(string   url)  
  188.       {  
  189. WebClient   wc   =   new   WebClient();  
  190. wc.Credentials   =   CredentialCache.DefaultCredentials;  
  191. Byte[]   pageData   =   wc.DownloadData(url);  
  192. string   SourceCode   =   Encoding.Default.GetString(pageData);  
  193. saveSourceCode(SourceCode);  
  194. wc.Dispose();    
  195. return   SourceCode;  
  196.       }  
  197.  
  198. 方法4  
  199. private   string   getWebresourceFile4(string   url)  
  200.     {  
  201. WebClient   wc   =   new   WebClient();  
  202. wc.Credentials   =   CredentialCache.DefaultCredentials;  
  203. Stream   resStream   =   wc.OpenRead(url);  
  204. StreamReader   sr   =   new   StreamReader(resStream,System.Text.Encoding.Default);  
  205.  
  206. string   SourceCode   =   sr.ReadToEnd();  
  207. saveSourceCode(SourceCode);  
  208. resStream.Close();  
  209. wc.Dispose();    
  210. return   SourceCode;  
  211.       }  
  212. 方法5  
  213. private   string   getWebresourceFile5(string   url)  
  214.       {  
  215. WebRequest   request   =   WebRequest.Create(url);  
  216. WebResponse   response   =   request.GetResponse();  
  217. Stream   resStream   =   response.GetResponseStream();    
  218. StreamReader   sr   =   new   StreamReader(resStream,   System.Text.Encoding.Default);  
  219. string   SourceCode   =     sr.ReadToEnd();  
  220. saveSourceCode(SourceCode);  
  221. resStream.Close();    
  222. sr.Close();  
  223. return   SourceCode;  
  224.       } 

 

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1079268


相关文章
|
3月前
|
数据采集 UED
HTTP代理的响应速度对网页采集有何影响?
随着互联网发展,使用代理IP的人数增多,HTTP代理的纯净度成为重要质量指标。它能提高业务价值、增强稳定性与性能、优化带宽利用,并增加代理IP的可用性和存活时间,确保高质量的服务效果。选择代理服务时,纯净度是关键考量因素。
68 6
|
4月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
289 7
|
21天前
|
监控 网络安全
网页显示HTTP错误503怎么办?HTTP错误503解决方法
HTTP 503错误表示服务器暂时无法处理请求,通常是由于服务器过载或维护导致。常见解决方法包括:1. 等待一段时间再刷新页面;2. 检查服务器负载;3. 确认服务器是否在维护;4. 检查配置错误;5. 联系服务提供商。通过这些步骤,用户和管理员可以有效排查并解决该问题。
134 3
|
1月前
|
网络协议 网络安全 数据安全/隐私保护
HTTP 协议浅析
通过对HTTP协议的深入了解,开发者可以更好地设计和优化Web应用,提高数据传输效率和用户体验。
132 21
|
2月前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
Web 性能优化|了解 HTTP 协议后才能理解的预加载
|
2月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验
160 28
|
2月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
304 25
|
2月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
350 18
|
3月前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
103 15
|
3月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法