通过程序对远程url中的源码的获取

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

第一种方法是通过WebClient 来获取

其中有两种方法:

1利用WebClien的DownloadData方法,直接获取。

string PageUrl = "http://www.webjx.com";

WebClient wc = new WebClient();

wc.Credentials = CredentialCache.DefaultCredentials;

///方法一:

Byte[] pageData = wc.DownloadData(PageUrl);

Response.Write(Encoding.UTF8.GetString(pageData));

2 利用WebClient的OpenRead 方法得到一个数据流,然后通过流数据来读取(我觉得这种方法适合大数据的源成url) 呵呵 ,不知道说得对不对?

/// 方法二

Stream resStream = wc.OpenRead(PageUrl);

StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);

ContentHtml.Text = sr.ReadToEnd();

resStream.Close();

当然这种用流的方式还是只是用于数据不大的情况,如果数据很大的话,由于我们开了个流,就可以采取措施。分步的来获取,不至于影响到程序的性能

第二种方法是用WebRequest 和 WebResponse来配合得到,具体流程是:

通过WebRequest 的 GetResponse方法将页面的源码传入WebResponse之中,然后在返 回一个Stream 通过读取这个stream来得到源代码:

string Url = "Http://www.webjx.com";

string StrReturn = "";

WebResponse result = null;

try

{

WebRequest req = WebRequest.Create(Url);

result = req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("GB2312");

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

StrReturn += str;

count = sr.Read(read, 0, 256);

}

}

catch(Exception ee)

{

StrReturn += e.ToString();

StrReturn += "找不到请求 URI,或者它的格式不正确";

}

finally

{

if ( result != null )

{

result.Close();

}

}

Response.Write( @StrReturn.Trim());

其中这里有一个小的技巧 读取数据流时,这段代码时让它以256字节为单位来循环读取,这样当数据较大时,就不会过大的影响到程序的性能

呵呵 不知道我说的对不对,欢迎大家和我讨论

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航