HttpRequest获取网站信息的程序示例
点击次数:19 次 发布日期:2008-11-26 14:13:07 作者:源代码网
|
源代码网推荐 源代码网推荐 解决:使用asp.net中的httprequest和httpresponse来实现。 源代码网推荐 源代码网推荐 要点: 源代码网推荐 1。 通过附加一个cookiecontainer到httprequest对象中,可以得到登录后返回的代表SESSION ID的COOKIE。 见Login方法 源代码网推荐 2。 将此COOKIE包含在一个cookiecontainer中并附加到另一个HTTPREQUEST请求中,则可以实现SESSION的还原。见getPage方法 源代码网推荐 源代码网推荐 源程序如下: 源代码网推荐 源代码网推荐 getHttpInfo.aspx: 源代码网推荐 <%@ Page language="c#" Codebehind="getHttpInfo.aspx.cs" AutoEventWireup="false" Inherits="PdfTest.getHttpInfo" %> 源代码网推荐 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 源代码网推荐 <HTML> 源代码网推荐 <HEAD> 源代码网推荐 <title>WebForm1</title> 源代码网推荐 <meta content="Microsoft Visual Studio 7.0" name="GENERATOR"> 源代码网推荐 <meta content="C#" name="CODE_LANGUAGE"> 源代码网推荐 <meta content="JavaScript" name="vs_defaultClientScript"> 源代码网推荐 <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> 源代码网推荐 </HEAD> 源代码网推荐 <body> 源代码网推荐 <form id="Form1" method="post" runat="server"> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </HTML> 源代码网推荐 源代码网推荐 源代码网推荐 getHttpInfo.aspx.cs: 源代码网推荐 using System; 源代码网推荐 using System.Collections; 源代码网推荐 using System.ComponentModel; 源代码网推荐 using System.Data; 源代码网推荐 //using System.Data.OleDb; 源代码网推荐 using System.Drawing; 源代码网推荐 using System.Web; 源代码网推荐 using System.Web.SessionState; 源代码网推荐 using System.Web.UI; 源代码网推荐 using System.Web.UI.WebControls; 源代码网推荐 using System.Web.UI.HtmlControls; 源代码网推荐 using System.Net; 源代码网推荐 using System.IO; 源代码网推荐 using System.Text; 源代码网推荐 using System.Text.RegularExpressions; 源代码网推荐 using Microsoft.Data.Odbc; 源代码网推荐 源代码网推荐 namespace PdfTest 源代码网推荐 { 源代码网推荐 /// <summary> 源代码网推荐 /// Summary description for WebForm1. 源代码网推荐 /// </summary> 源代码网推荐 public class getHttpInfo : System.Web.UI.Page 源代码网推荐 { 源代码网推荐 protected static string cookieheader; 源代码网推荐 源代码网推荐 源代码网推荐 private void Page_Load(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 // Put user code to initialize the page here 源代码网推荐 源代码网推荐 string strResult; 源代码网推荐 源代码网推荐 if (HttpContext.Current.Application["cookieheader"] != null) 源代码网推荐 { 源代码网推荐 cookieheader = (string)HttpContext.Current.Application["cookieheader"]; 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 //Login into the website and keep the cookie for the session in the application variable 源代码网推荐 string strLogin = Login("http://www.thesiteyouwanttovisit/theloginpage.asp", "Action=&USERID=&Password=") ; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 strResult = getPage("http://www.thesiteyouwanttovisit/theloginpage.asp", "Action=&data=") ; 源代码网推荐 源代码网推荐 源代码网推荐 //Write the result to htm file 源代码网推荐 FileStream htmFile = new FileStream("c:save.htm", FileMode.OpenOrCreate); 源代码网推荐 StreamWriter sw = new StreamWriter(htmFile); 源代码网推荐 sw.Write(strResult); 源代码网推荐 sw.Close(); 源代码网推荐 htmFile.Close(); 源代码网推荐 源代码网推荐 // output the result 源代码网推荐 Response.Write(strResult); 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 public static string Login(String url, String paramList) 源代码网推荐 { 源代码网推荐 HttpWebResponse res = null; 源代码网推荐 string strResult=""; 源代码网推荐 源代码网推荐 try 源代码网推荐 { 源代码网推荐 源代码网推荐 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 源代码网推荐 req.Method = "POST"; 源代码网推荐 req.ContentType = "application/x-www-form-urlencoded"; 源代码网推荐 req.AllowAutoRedirect = false; 源代码网推荐 CookieContainer cookieCon = new CookieContainer(); 源代码网推荐 req.CookieContainer = cookieCon; 源代码网推荐 源代码网推荐 StringBuilder UrlEncoded = new StringBuilder(); 源代码网推荐 Char[] reserved = {"?", "=", "&"}; 源代码网推荐 byte[] SomeBytes = null; 源代码网推荐 源代码网推荐 if (paramList != null) 源代码网推荐 { 源代码网推荐 int i=0, j; 源代码网推荐 while(i<paramList.Length) 源代码网推荐 { 源代码网推荐 j=paramList.IndexOfAny(reserved, i); 源代码网推荐 if (j==-1) 源代码网推荐 { 源代码网推荐 UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length-i))); 源代码网推荐 break; 源代码网推荐 } 源代码网推荐 UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j-i))); 源代码网推荐 UrlEncoded.Append(paramList.Substring(j,1)); 源代码网推荐 i = j+1; 源代码网推荐 } 源代码网推荐 SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString()); 源代码网推荐 req.ContentLength = SomeBytes.Length; 源代码网推荐 Stream newStream = req.GetRequestStream(); 源代码网推荐 newStream.Write(SomeBytes, 0, SomeBytes.Length); 源代码网推荐 newStream.Close(); 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 req.ContentLength = 0; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 res = (HttpWebResponse)req.GetResponse(); 源代码网推荐 cookieheader = req.CookieContainer.GetCookieHeader(new Uri(url)); 源代码网推荐 HttpContext.Current.Application.Lock(); 源代码网推荐 HttpContext.Current.Application["cookieheader"] = cookieheader; 源代码网推荐 HttpContext.Current.Application.UnLock(); 源代码网推荐 源代码网推荐 Stream ReceiveStream = res.GetResponseStream(); 源代码网推荐 Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 源代码网推荐 StreamReader sr = new StreamReader( ReceiveStream, encode ); 源代码网推荐 Char[] read = new Char[256]; 源代码网推荐 int count = sr.Read( read, 0, 256 ); 源代码网推荐 while (count > 0) 源代码网推荐 { 源代码网推荐 String str = new String(read, 0, count); 源代码网推荐 strResult += str; 源代码网推荐 count = sr.Read(read, 0, 256); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 catch(Exception e) 源代码网推荐 { 源代码网推荐 strResult = e.ToString(); 源代码网推荐 } 源代码网推荐 finally 源代码网推荐 { 源代码网推荐 if ( res != null ) 源代码网推荐 { 源代码网推荐 res.Close(); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 return strResult; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 public static string getPage(String url, String paramList) 源代码网推荐 { 源代码网推荐 HttpWebResponse res = null; 源代码网推荐 string strResult = ""; 源代码网推荐 源代码网推荐 try 源代码网推荐 { 源代码网推荐 源代码网推荐 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 源代码网推荐 req.Method = "POST"; 源代码网推荐 req.KeepAlive = true; 源代码网推荐 req.ContentType = "application/x-www-form-urlencoded"; 源代码网推荐 CookieContainer cookieCon = new CookieContainer(); 源代码网推荐 req.CookieContainer = cookieCon; 源代码网推荐 req.CookieContainer.SetCookies(new Uri(url),cookieheader); 源代码网推荐 StringBuilder UrlEncoded = new StringBuilder(); 源代码网推荐 Char[] reserved = {"?", "=", "&"}; 源代码网推荐 byte[] SomeBytes = null; 源代码网推荐 源代码网推荐 if (paramList != null) 源代码网推荐 { 源代码网推荐 int i=0, j; 源代码网推荐 while(i<paramList.Length) 源代码网推荐 { 源代码网推荐 j=paramList.IndexOfAny(reserved, i); 源代码网推荐 if (j==-1) 源代码网推荐 { 源代码网推荐 UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length-i))); 源代码网推荐 break; 源代码网推荐 } 源代码网推荐 UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j-i))); 源代码网推荐 UrlEncoded.Append(paramList.Substring(j,1)); 源代码网推荐 i = j+1; 源代码网推荐 } 源代码网推荐 SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString()); 源代码网推荐 req.ContentLength = SomeBytes.Length; 源代码网推荐 Stream newStream = req.GetRequestStream(); 源代码网推荐 newStream.Write(SomeBytes, 0, SomeBytes.Length); 源代码网推荐 newStream.Close(); 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 req.ContentLength = 0; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 res = (HttpWebResponse)req.GetResponse(); 源代码网推荐 Stream ReceiveStream = res.GetResponseStream(); 源代码网推荐 Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 源代码网推荐 StreamReader sr = new StreamReader( ReceiveStream, encode ); 源代码网推荐 Char[] read = new Char[256]; 源代码网推荐 int count = sr.Read( read, 0, 256 ); 源代码网推荐 while (count > 0) 源代码网推荐 { 源代码网推荐 String str = new String(read, 0, count); 源代码网推荐 strResult += str; 源代码网推荐 count = sr.Read(read, 0, 256); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 catch(Exception e) 源代码网推荐 { 源代码网推荐 strResult = e.ToString(); 源代码网推荐 } 源代码网推荐 finally 源代码网推荐 { 源代码网推荐 if ( res != null ) 源代码网推荐 { 源代码网推荐 res.Close(); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 return strResult; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 #region Web Form Designer generated code 源代码网推荐 override protected void OnInit(EventArgs e) 源代码网推荐 { 源代码网推荐 // 源代码网推荐 // CODEGEN: This call is required by the ASP.NET Web Form Designer. 源代码网推荐 // 源代码网推荐 InitializeComponent(); 源代码网推荐 base.OnInit(e); 源代码网推荐 } 源代码网推荐 源代码网推荐 /// <summary> 源代码网推荐 /// Required method for Designer support - do not modify 源代码网推荐 /// the contents of this method with the code editor. 源代码网推荐 /// </summary> 源代码网推荐 private void InitializeComponent() 源代码网推荐 { 源代码网推荐 this.Load += new System.EventHandler(this.Page_Load); 源代码网推荐 源代码网推荐 } 源代码网推荐 #endregion 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 } 源代码网推荐 } 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
