CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

[高级货]请问怎么获取一个HTTP地址如:http://www.sina.com/a.html里的HTML内容

楼主Dlandiao(D蓝调)2006-10-18 15:45:05 在 .NET技术 / C# 提问

如题。最好不要用WebBrowser控件 问题点数:100、回复次数:31Top

1 楼csShooter(Sharp Shooter)回复于 2006-10-18 15:49:32 得分 0

WebClient.OpenReadTop

2 楼woshibai110()回复于 2006-10-18 15:51:34 得分 0

upTop

3 楼lbqlbq(流星)回复于 2006-10-18 15:52:03 得分 5

HttpWebRequest,HttpWebResponseTop

4 楼Dlandiao(D蓝调)回复于 2006-10-18 15:53:03 得分 0

楼上地XD能不能详细点呢?  
  Top

5 楼lbqlbq(流星)回复于 2006-10-18 16:06:58 得分 5

你到MSDN上搜索一下,有例子Top

6 楼dyw31415926(守护)回复于 2006-10-18 16:16:22 得分 30

既然有这么多朋友问这问题,我就写了一个小程序,希望大家能理解,拖个button1   listBox1  
  在button事件里写代码,参考代码如下:(不要忘了加引用哦)  
  using   System.Net;  
  using   System.IO;    
  private   void   button1_Click(object   sender,   EventArgs   e)  
                  {  
                         
                          WebRequest   request   =   WebRequest.Create(  
                              "http://www.google.com");    
                          request.Credentials   =   CredentialCache.DefaultCredentials;  
                          WebResponse   response   =   request.GetResponse();  
                          Stream   dataStream   =   response.GetResponseStream();  
                          StreamReader   reader   =   new   StreamReader(dataStream);  
                          string   responseFromServer   =   "";  
                          string   strTemp;  
                          while   (   (strTemp   =   reader   .ReadLine   ())   !=   null   )  
                          {  
                                    listBox1.Items.Add(strTemp   );  
                          }  
                          reader.Close();  
                          response.Close();  
   
                  }Top

7 楼miqier(米琪儿)回复于 2006-10-18 16:20:45 得分 5

哈哈,人气很旺,来晚了。楼上的就可以了。Top

8 楼yan63(silence like a cancer grows)回复于 2006-10-18 16:20:45 得分 20

同意csShooter(Sharp   Shooter)  
  参考:http://msdn2.microsoft.com/en-us/library/781fwaz8.aspx#Mtps_DropDownFilterText  
   
  //   Create   a   new   WebClient   instance.  
  WebClient   myWebClient   =   new   WebClient();  
  //   Download   home   page   data.    
  Console.WriteLine("Accessing   {0}   ...",     uriString);                                                  
  //   Open   a   stream   to   point   to   the   data   stream   coming   from   the   Web   resource.  
  Stream   myStream   =   myWebClient.OpenRead(uriString);  
   
  Console.WriteLine("\nDisplaying   Data   :\n");  
  StreamReader   sr   =   new   StreamReader(myStream);  
  Console.WriteLine(sr.ReadToEnd());  
   
   
  //   Close   the   stream.    
  myStream.Close();  
  Top

9 楼web_sharp()回复于 2006-10-18 16:22:47 得分 0

努力学习中.Top

10 楼jc15271149(奶皮儿)回复于 2006-10-18 16:24:40 得分 10

HttpWebRequest   HttpWReq   =   (HttpWebRequest)WebRequest.Create(WebPath);  
  HttpWebResponse   HttpWResp   =   (HttpWebResponse)HttpWReq.GetResponse();  
  Stream   str   =   HttpWResp.GetResponseStream();Top

11 楼xingyaohua(邢跃华)回复于 2006-10-18 16:26:27 得分 0

upTop

12 楼Dlandiao(D蓝调)回复于 2006-10-18 16:33:58 得分 0

TO:   dyw31415926(dyw31415926)    
  经过测试,上面的方法显示的都是乱码,这又如何解决呢??Top

13 楼zerg318()回复于 2006-10-18 16:35:26 得分 0

啊Top

14 楼Dlandiao(D蓝调)回复于 2006-10-18 16:37:44 得分 0

包括yan63()的方法,也是乱码!Top

15 楼yan63(silence like a cancer grows)回复于 2006-10-18 16:39:25 得分 5

需要确认一下网页的字符编码,如果同lz本机的默认编码不同,会有软码  
  ....  
  Stream   dataStream   =   response.GetResponseStream();  
                  Encoding   webEncode   =   Encoding.UTF8;  
                  StreamReader   reader   =   new   StreamReader(dataStream,   webEncode);  
  .....  
  Top

16 楼dyw31415926(守护)回复于 2006-10-18 16:40:28 得分 0

TO:   dyw31415926(dyw31415926)    
  经过测试,上面的方法显示的都是乱码,这又如何解决呢??  
   
  ------------------------------------------------------------------  
  请问您测试的是哪个网址,可否贴出来看看.  
  楼主应该先打开个新ie窗口,将网址输进去,回车要是本来出来的就是乱码,那出现乱码才是正常的啊!!!!!!!!!但这并不意味着是错的,因为这一般是一些二进制的信息,   你要知道它的格式,经过处理后,   才可以解析出内容.Top

17 楼gezichong(鸽子虫)回复于 2006-10-18 16:44:11 得分 0

markTop

18 楼Dlandiao(D蓝调)回复于 2006-10-18 16:47:07 得分 0

是google的Top

19 楼Dlandiao(D蓝调)回复于 2006-10-18 16:53:22 得分 0

Encoding   webEncode   =   Encoding.UTF8;  
                  StreamReader   reader   =   new   StreamReader(dataStream,   webEncode);  
  这样做以后还是乱,OMG!!Top

20 楼Dlandiao(D蓝调)回复于 2006-10-18 17:02:41 得分 0

yan63()   兄,非常认真的试了你的方法,若是把网页保存成UTF-8代码,那就可以了。  
  问题是我如何知道请求网页的编码呢??Top

21 楼yan63(silence like a cancer grows)回复于 2006-10-18 17:42:12 得分 0

第一反应是<meta   http-equiv="content-type"   content="text/html;   charset=UTF-8">  
  后来觉得这是蛋在鸡之先的回答,而且部分网页也是没有这个,使用它服务器上的默认编码...可能像google抓取网页的时候也是比特流,正确显示的职能交由客户的ie设置。Top

22 楼Dlandiao(D蓝调)回复于 2006-10-18 17:45:12 得分 0

谁来回答下我的问题呢?   如何获取请求网页的编码呢??Top

23 楼rikee19810706()回复于 2006-10-18 19:23:13 得分 0

markTop

24 楼blackhero(黑侠客)回复于 2006-10-18 19:46:37 得分 10

小偷程序http://community.csdn.net/Expert/topic/4958/4958401.xml?temp=.3348963Top

25 楼myminimouse(坚决不用baidu)回复于 2006-10-19 08:28:03 得分 0

c#:  
  http://topic.csdn.net/t/20050531/15/4048803.html  
  http://blog.tom.com/blog/read.php?bloggerid=91109&blogid=9937  
   
  c/c++:  
  http://www.blogcn.com/user59/vilmali/blog/28601505.htmlTop

26 楼myminimouse(坚决不用baidu)回复于 2006-10-19 08:32:39 得分 10

不好意思发错了  
   
  lz可以看这个:  
  http://community.csdn.net/Expert/topic/5076/5076413.xml?temp=.3574488Top

27 楼test33(隐姓埋名)回复于 2006-10-19 09:19:25 得分 0

学习。。。Top

28 楼Dlandiao(D蓝调)回复于 2006-10-19 10:00:41 得分 0

Content-Type键只返回“text/html”,而没有编码。Top

29 楼wang8712(Andy)回复于 2006-10-19 10:30:22 得分 0

using   System.Net;  
  using   System.IO;    
  private   void   button1_Click(object   sender,   EventArgs   e)  
                  {  
                         
                          WebRequest   request   =   WebRequest.Create(  
                              "http://www.google.com");    
                          request.Credentials   =   CredentialCache.DefaultCredentials;  
                          WebResponse   response   =   request.GetResponse();  
                          Stream   dataStream   =   response.GetResponseStream();  
                          StreamReader   reader   =   new   StreamReader(dataStream);  
                          string   responseFromServer   =   "";  
                          string   strTemp;  
                          while   (   (strTemp   =   reader   .ReadLine   ())   !=   null   )  
                          {  
                                    listBox1.Items.Add(strTemp   );  
                          }  
                          reader.Close();  
                          response.Close();  
   
                  }Top

30 楼Dlandiao(D蓝调)回复于 2006-10-19 10:33:38 得分 0

老大,谢谢你再贴一遍,不过现在的问题是编码了。看来我得闭贴了。Top

31 楼Dlandiao(D蓝调)回复于 2006-10-19 10:43:03 得分 0

结贴喽Top

相关问题

关键词

得分解答快速导航

  • 帖主:Dlandiao
  • lbqlbq
  • lbqlbq
  • dyw31415926
  • miqier
  • yan63
  • jc15271149
  • yan63
  • blackhero
  • myminimouse

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo