- 通过http协议C#获取网页源代码
-
- 方法一:
-
- using System.Text;
- using System.Net;
- private string getHtml(string url)
- {
-
WebClient myWebClient = new WebClient();
-
byte[] myDataBuffer = myWebClient.DownloadData (url);
- return Encoding.Default.GetString(myDataBuffer);
- }
-
- 方法二:
-
- public string getHttp(string HttpUrl,string RefererUrl)
- {
-
string html = "";
- try
- {
-
MSXML2.XMLHTTP Http = new MSXML2.XMLHTTPClass();
- xmlhttp.open("GET", Url, false, null, null);
- Http.open("GET",HttpUrl,false,null,null);
- Http.setRequestHeader("Referer",RefererUrl);
- //Http.setRequestHeader("Referer",RefererUrl);
-
Http.setRequestHeader("Content-Type", "text/html;charset=gb2312");
- Http.send("");
-
html = Encoding.Default.GetString((byte[])Http.responseBody);
-
Http = null;
- }
- catch
- {
-
- }
- return html;
- }
-
-
-
-
-
- public bool getweb(string strURL,out string buf)
- {
-
buf="";
- try
- {
-
//Uri url=new Uri(strURL,false);
- HttpWebRequest request;
-
request = (HttpWebRequest)WebRequest.Create(strURL);
-
request.Method="POST"; //Post请求方式
-
request.ContentType="text/html;charset=gb2312"; //内容类型
-
string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码
- byte[] payload;
-
payload = System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节
-
request.ContentLength = payload.Length; //设置请求的ContentLength
-
Stream writer = request.GetRequestStream(); //获得请求流
- writer.Write(payload,0,payload.Length); //将请求参数写入流
- writer.Close(); //关闭请求流
- HttpWebResponse response;
-
response = (HttpWebResponse)request.GetResponse(); //获得响应流
- Stream s;
-
s = response.GetResponseStream();
-
StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));
-
string HTML = "";
-
string sLine ="";
-
int i = 0;
- while (sLine!=null)
- {
- i++;
-
sLine = objReader.ReadLine();
- if (sLine!=null)
- HTML += sLine;
- }
-
//HTMLHTML = HTML.Replace("<","<");
-
//HTMLHTML = HTML.Replace(">",">");
-
buf=HTML;
- return true;
- }
- catch (Exception x)
- {
-
buf=x.Message.ToString();
- return false;
- }
- }
-
- 带Cookie:
-
CookieContainer cc = new CookieContainer();
- public bool getweb(string strURL,out string buf)
- {
-
buf="";
- try
- {
- HttpWebRequest request;
-
request = (HttpWebRequest)WebRequest.Create(strURL);
-
request.Method="POST"; //Post请求方式
-
request.ContentType="text/html;charset=gb2312"; //内容类型
-
string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码
- byte[] payload;
-
payload = System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节
-
request.ContentLength = payload.Length; //设置请求的ContentLength
-
Stream writer = request.GetRequestStream(); //获得请求流
- writer.Write(payload,0,payload.Length); //将请求参数写入流
- writer.Close(); //关闭请求流
- HttpWebResponse response;
-
response = (HttpWebResponse)request.GetResponse(); //获得响应流
- Stream s;
-
s = response.GetResponseStream();
-
StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));
-
string HTML = "";
-
string sLine ="";
-
int i = 0;
- while (sLine!=null)
- {
- i++;
-
sLine = objReader.ReadLine();
- if (sLine!=null)
- HTML += sLine;
- }
-
-
buf=HTML;
- return true;
- }
- catch (Exception x)
- {
-
buf=x.Message.ToString();
- return false;
- }
- }
- public bool getweb(string strURL,out string buf,string postData)
- {
-
buf="";
- try
- {
-
-
ASCIIEncoding encoding = new ASCIIEncoding();
-
byte[] data = encoding.GetBytes(postData);
-
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
-
request.Method = "POST";
-
request.ContentType = "application/x-www-form-urlencoded";
-
request.ContentLength = data.Length;
-
Stream newStream = request.GetRequestStream();
- newStream.Write(data, 0, data.Length);
- newStream.Close();
-
-
request.CookieContainer = cc;
-
-
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- cc.Add(response.Cookies);
-
Stream stream = response.GetResponseStream();
-
string sHtml = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();
-
buf=sHtml;
- return true;
- }
- catch (Exception x)
- {
-
buf=x.Message.ToString();
- return false;
- }
- }
-
- private string getWebresourceFile1(string url)
- {
-
-
WebClient myWebClient = new WebClient();
-
byte[] myDataBuffer = myWebClient.DownloadData(url);
-
string SourceCode = Encoding.Default.GetString(myDataBuffer);
- saveSourceCode(SourceCode);
- return SourceCode;
- }
-
- 方法2
- private string getWebresourceFile2(string url)
- {
-
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(url);
-
HttpWebResponse response=(HttpWebResponse)request.GetResponse();
-
request.Method = "GET ";
-
Stream receiveStream=response.GetResponseStream();
-
StreamReader readStream=new StreamReader(receiveStream,Encoding.Default);
-
string SourceCode=readStream.ReadToEnd();
- saveSourceCode(SourceCode);
- response.Close();
- readStream.Close();
- return SourceCode;
-
- }
- 方法3
- private string getWebresourceFile3(string url)
- {
-
WebClient wc = new WebClient();
-
wc.Credentials = CredentialCache.DefaultCredentials;
-
Byte[] pageData = wc.DownloadData(url);
-
string SourceCode = Encoding.Default.GetString(pageData);
- saveSourceCode(SourceCode);
- wc.Dispose();
- return SourceCode;
- }
-
- 方法4
- private string getWebresourceFile4(string url)
- {
-
WebClient wc = new WebClient();
-
wc.Credentials = CredentialCache.DefaultCredentials;
-
Stream resStream = wc.OpenRead(url);
-
StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
-
-
string SourceCode = sr.ReadToEnd();
- saveSourceCode(SourceCode);
- resStream.Close();
- wc.Dispose();
- return SourceCode;
- }
- 方法5
- private string getWebresourceFile5(string url)
- {
-
WebRequest request = WebRequest.Create(url);
-
WebResponse response = request.GetResponse();
-
Stream resStream = response.GetResponseStream();
-
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
-
string SourceCode = sr.ReadToEnd();
- saveSourceCode(SourceCode);
- resStream.Close();
- sr.Close();
- return SourceCode;
- }
本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1079268