日期:2014-04-08  浏览次数:20357 次

 问题:有的网站的相关内容必须要在登录后才可以查看,其登录信息保存在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)
  {
  HttpWebRespo