All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP实现同步远程Mysql_[PHP教程]
ASP.NET2.0服务器控件之创建复杂属性_[Asp.Net教程]
C#中Label控件应用实例
十天学会ASP.net,第九天_.net资料_编程技术
ASP.NET程序与Access和SQL,Server数据库连接_[Asp.Net教程]
理解动态网页技术PHP与数组的应用_php资料_编程技术
ASP.NET,2.0,页面状态持续程序实例_[Asp.Net教程]
Sql,server,2005的XML最佳实施策略(1)_[SQL,Server教程]
PHP的特点与市场情况_php资料_编程技术
PHP开发中接收复选框信息的方法_[PHP教程]
Reading number is top 10 pictures
人美胸美腿更美1
A man's favorite things12
Beautiful vacuum girl2
In the world the most mysterious 21 place landscape2
girl of HuNan name is LiXiang(湖南辣姐李湘的写真)
The money of more than 100 countries and regions12
刘亦菲写真集2
人造器官和铁肺人
Take you to walk into the most true north Korea rural3
Wild animals melee moment of life and death2
Download software ranking
星际争霸1.08硬盘免安装版
Boxer's Top ten classic battle5
Sora aoi‘s film--Lust fan wall
电车之狼R
功夫熊猫2(上集)
Sora aoi, the maid, students' uniforms
Unix video tutorial9
Boxer vs Yellow2
Ashlynn Video1
Tram sex maniac 2 (H) rar bag2
delv published in(发表于) 2014/1/16 9:31:13 Edit(编辑)
利用HttpRequest登录到某个网站,然后获取网站信息的程序示例_[Asp.Net教程]

利用HttpRequest登录到某个网站,然后获取网站信息的程序示例_[Asp.Net教程]

利用HttpRequest登录到某个网站,然后获取网站信息的程序示例_[Asp.Net教程]

问题:


有的网站的相关内容必须要在登录后才可以查看,其登录信息保存在session变量之中。这样,使用asphttp等组件就难以正确得到所要的信息。



解决:


使用asp.net中的httprequest和httpresponse来实现。



要点:


1。 通过附加一个cookiecontainer到httprequest对象中,可以得到登录后返回的代表SESSION ID的COOKIE。 见Login方法
2。 将此COOKIE包含在一个cookiecontainer中并附加到另一个HTTPREQUEST请求中,则可以实现SESSION的还原。见getPage方法



源程序如下:


getHttpInfo.aspx:
复制ASPX代码保存代码<%@ Page Language="c#" Codebehind="getHttpInfo.aspx.cs" AutoEventWireup="false" Inherits="PdfTest.getHttpInfo" %>





WebForm1









<%@ Page Language="c#" Codebehind="getHttpInfo.aspx.cs" AutoEventWireup="false" Inherits="PdfTest.getHttpInfo" %>





WebForm1










getHttpInfo.aspx.cs:
复制C#代码保存代码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 description for WebForm1.
///

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);
}


///


/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///

private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);


}
#endregion


}
}


来源:阿良.NET







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.