要实现一个读取别人网页上面的新闻,然后在自己的网页上面显示,页面的样式都要是自己的
在线等待高人指点。。
在线等待高人指点。。
解决方案 »
- window.location.replace('?agree=yes
- 关于vs2005的问题
- 设置Excel模板
- 请问各位大哥大姐,如何才能实现在DATAGRID中单击,选中一行.
- 请问:多文件上传问题中的 改上传文件名字
- 超过65000条记录如何让excel自动分sheet?
- 如何判断文件是否为文本文件(50分)
- 我用asp.net+C#开发的程序,在长时间的测试过程中,我发现网页有时要记忆上次的内容,不知怎么办?
- datagrid中ButtonColumn(删除)与刷新问题?
- 求一个能编辑字体,能上传图片的富文本编辑器。在线等,急!
- 【300分】呼叫过客等正则高手
- 模式化窗口第二次打开时不执行后台语句
WebClient使用WebRequest类提供访问Internet资源的方式
WebClient以更高的级别封装WebRequest类,并提取了大部分的细节
WebClient方法
OpenWrite():发送流
UploadData():发送字节数组,并在响应时返回字节数组
OpenFile():发送本地文件
UploadValues():发送名值集合
DownLoadData():下载数据并返回字节数组
DownLoadFile():把得到数据下载给本地文件
OpenRead():把从资源得到的数据返回为流
例1. WebClient类使用
前台:
输入URL:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Button ID="btnGetData" runat="server" Text="得到数据" OnClick="btnGetData_Click" /><br />
<asp:TextBox ID="TextBox4" runat="server" Height="117px" TextMode="MultiLine" Width="312px"></asp:TextBox><br />
要下载的文件地址URL:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:Button ID="btnDownLoad" runat="server" Text="下载文件" OnClick="btnDownLoad_Click" />
后台:
using System.Net;
using System.IO;
using System.Net.Sockets;
protected void btnGetData_Click(object sender, EventArgs e)
{
WebClient client = new WebClient();
Stream response = client.OpenRead(TextBox3.Text);
TextBox4.Text = "";
int nByteData;
do
{
nByteData = response.ReadByte();
if (nByteData > 0)
TextBox4.Text += Convert.ToChar(nByteData);
}while (nByteData > 0);
response.Close();
}
protected void btnDownLoad_Click(object sender, EventArgs e)
{
WebClient client = new WebClient();
string strDes = "e:\\"+Path.GetFileName(TextBox5.Text);
client.DownloadFile(TextBox5.Text,strDes);
Response.Write("目标地址为:"+strDes);
}
*WebClient以更高的封装方式封闭了WebRequest.
一. 使用WebRequest和WebResponse
可以组合WebRequest和WebResponse类,从Internet资源请求数据,然后读取响应
例2. WebRequest与WebResponse类使用实例
前台:
URL地址:<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox> <asp:Button ID="btnGet"
runat="server" Text="获取数据" OnClick="btnGet_Click" /><br />
<asp:TextBox ID="TextBox1" runat="server" Height="133px" TextMode="MultiLine" Width="294px"></asp:TextBox>
后台:
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Text;
protected void btnGet_Click(object sender, EventArgs e)
{
WebRequest req = WebRequest.Create(TextBox6.Text);
WebResponse res = req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
Encoding ecode = Encoding.GetEncoding("utf-8");
StreamReader sr = new StreamReader(ReceiveStream,ecode);
Char[] ReadBuffer = new Char[256];
int nCount = sr.Read(ReadBuffer,0,256);
while (nCount > 0)
{
string str = new string(ReadBuffer,0,nCount);
TextBox1.Text += str;
nCount = sr.Read(ReadBuffer,0,256);
}
}
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;namespace MCore.BLL
{
public class GetPage
{
/// <summary>
/// 获取指定URL页面的内容,使用HttpWebRequest方式
/// </summary>
/// <param name="xURL">URL的字符串表现形式</param>
/// <param name="encode">页面使用的编码</param>
/// <returns>返回页面HTML代码</returns>
public string Get_Page(string xURL)
{
string content = "";
HttpWebRequest httpget = (HttpWebRequest)HttpWebRequest.Create(xURL);
try
{
HttpWebResponse httpres = (HttpWebResponse)httpget.GetResponse();
Stream httpstr = httpres.GetResponseStream();
StreamReader sr = new StreamReader(httpstr, Encoding.Default);
content = sr.ReadToEnd();
sr.Close(); }
catch (Exception)
{ }
return content;
} /// <summary>
/// 获取指定内容中的部分信息
/// </summary>
/// <param name="PageContent">指定内容</param>
/// <param name="RegStr">要获取信息的正则表达式</param>
/// <returns>最后匹配的结果集</returns>
public string[] Get_Info(string PageContent, string RegStr)
{
ArrayList info = new ArrayList();
Regex RegURL = new Regex(RegStr);
foreach (Match myMatch in RegURL.Matches(PageContent))
{
info.Add(myMatch.ToString());
}
string[] Infos = new string[info.Count];
info.CopyTo(Infos);
if (info.Count == 0)
{
Infos = new string[1] { "" };
}
return Infos;
} /// <summary>
/// 获取指定URL页面的内容,使用HttpWebRequest方式
/// </summary>
/// <param name="xURL">URL的字符串表现形式</param>
/// <param name="encode">页面使用的编码</param>
/// <returns>返回页面HTML代码</returns>
public string Get_Page(string xURL, Encoding encode)
{
string content = "";
HttpWebRequest httpget = (HttpWebRequest)HttpWebRequest.Create(xURL);
try
{
HttpWebResponse httpres = (HttpWebResponse)httpget.GetResponse();
Stream httpstr = httpres.GetResponseStream();
StreamReader sr = new StreamReader(httpstr, encode);
content = sr.ReadToEnd(); }
catch (Exception)
{ }
return content;
} public string GetPageContent(string url, string postdata, string encode, string method, CookieContainer cc)
{
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.KeepAlive = true;
objRequest.AllowAutoRedirect = true;
objRequest.UserAgent = "Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+Alexa+Toolbar)";
objRequest.CookieContainer = cc;
objRequest.Method = method;
objRequest.Referer = url;
objRequest.ProtocolVersion = System.Net.HttpVersion.Version11; if (method.ToLower() == "post")
{
objRequest.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = Encoding.GetEncoding(encode).GetBytes(postdata);
objRequest.ContentLength = bytes.Length;
Stream outStream = objRequest.GetRequestStream();
outStream.Write(bytes, 0, bytes.Length);
outStream.Close();
} try
{
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
Stream objStream = objResponse.GetResponseStream();
StreamReader sr = new StreamReader(objStream, System.Text.Encoding.GetEncoding(encode));
return sr.ReadToEnd();
}
catch (Exception ex)
{
return ex.ToString();
}
}
}
}