您现在的位置: 爱51代码网 >> 范文 >> 文章正文
C# winform如何取到一个网页的值

C# winform如何取到一个网页的值

我对网页操作不是很熟悉,我大概想要实现的功能就是
取http-://bns.plaync.-com/api/launcher/launcher?serverType=live
用IE的内核打开是需要下载的,用火狐之类打开可以直接看到值
我就是想取这个网页的内容
我尝试过用webBrowser,但是一旦成功登录后使用Navigate,就会直接像IE那样弹下载,
后来我想过用ajax的跨域取网页元素

 function writeSource() {     if (xmlHttp.readyState == 4) {         alert(xmlHttp.responseText);     } }   xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = writeSource; xmlHttp.open('GET', 'http://bns.plaync.com/api/launcher/launcher?serverType=live', true);     xmlHttp.send(null);


但是调用open的时候失败,跨域也失败了。在火狐上是成功了的……
然后我试过用webclient,但是因为登录的时候是https的,所以也不成功
我尝试用WebRequest,但是没法进行操作登录,里面的post加密有几个参数我搞不定……论文网 
后来我又想过用webBrowser登录成功后产生cookie,然后把这个cookie转换成WebRequest用的cookie

 CookieContainer CCArray = new CookieContainer(); string strCookie = webBrowser1.Document.Cookie; string[] cookstr = strCookie.Split(';'); foreach (string str in cookstr) {      string[] cookValueName = str.Split('=');      Cookie ck = new Cookie(cookValueName[0].Trim().ToString(),cookValueName[1].Trim().ToString());        ck.Domain = "bns.plaync.com";        CCArray.Add(ck);  }


但是我加入到WebRequest的时候又来一个异常,对象未实例化。
最后我找一下百度+谷歌,找到了一个屏蔽下载,自动下载到本地,我再读取的。
后面看了下,又是webBrowser+Webclient下载的功能,结果还是因为没cookie,所以下载的是错误的文件。实在没辙了。
问题:不知道能不能在webBrowser1下取到http:-//bns.plaync.-com/api/launcher/launcher?serverType=live这个的值,他打开要下载
 static void Main(string[] args)         {             Console.WriteLine(Getpage());             Console.Read();         }           static string Getpage()         {             System.IO.Stream response;             System.IO.StreamReader sr;             string result = string.Empty;             string domain = "http:-//bns.plaync.-com/api/launcher/launcher?serverType=live";             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(domain);             request.Method = "GET";             request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";             request.Headers.Set("Accept-Charset", "GBK,utf-8;q=0.7,*;q=0.3");                       request.Headers.Set("Accept-Language", "zh-cn,zh;q=0.5");             request.Headers.Set("Accept-Encoding", "gzip,deflate,sdch");             request.Host = "bns.plaync.com";                        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11";                        request.KeepAlive = true;             HttpWebResponse httprp = (HttpWebResponse)request.GetResponse();             httprp.Headers.Set("Content-Encoding", "gzip");             //获取cookie的响应头->最好还是写一个cookie             //httprp.Headers[""];             response = httprp.GetResponseStream();             sr = new System.IO.StreamReader(response,Encoding.UTF8);                      result = sr.ReadToEnd();             response.Close();             sr.Close();             return result;         }

CookieContainer CCArray = new CookieContainer(); string strCookie = webBrowser1.Document.Cookie; string[] cookstr = strCookie.Split(';'); foreach (string str in cookstr) {      string[] cookValueName = str.Split('=');      Cookie ck = new Cookie(cookValueName[0].Trim().ToString(),cookValueName[1].Trim().ToString());        ck.Domain = "bns.plaync.com";        CCArray.Add(ck);  } 


你确认一下每一个cookie的domain是否都是bns.plaync.com 会不会存在不一样的。

我比较看好。

webbroser登录取cookie然后给httpwebrequest,或webclient这种方法。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    保险受益人制度相关问题的探讨
    初中生地理读图能力培养的研究
    “Point”是“System.Drawin
    Google paly上如何赚美元
    Eclipse快捷键大全
    android异步网络连接开源:A
    快速理解存储函数、存储过程
    Hibernate性能优化
    使用PL/SQL连接别人的Oracle
    ISP在线编程功能的问题
    2440用LVDS传输时,屏闪烁
    windows上的MFC程序向window
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |