当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  HttpRequest获取网站信息的程序示例

 HttpRequest获取网站信息的程序示例

点击次数:19 次 发布日期:2008-11-26 14:13:07 作者:源代码网
源代码网推荐      问题:有的网站的相关内容必须要在登录后才可以查看,其登录信息保存在session变量之中。这样,使用asphttp等组件就难以正确得到所要的信息。
源代码网推荐  
源代码网推荐  解决:使用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)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华