C# winform想办法取到一个网页的值 100分
本帖最后由 liu13541dong 于 2013-04-17 03:25:44 编辑 我对网页操作不是很熟悉,我大概想要实现的功能就是
取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);
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);
}
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);
}