我正在使用BandOjects和C#Windows Forms Application创建Internet Explorer,并正在测试解析HTML源代码。我目前一直在根据网站的网址解析信息。
我想获取我使用登录的示例网站的当前页面的HTML源代码。如果我使用我所在页面的URL,它将始终获取登录页面的来源而不是实际页面,因为我的应用程序无法识别我已登录。我是否需要存储我的登录凭据网站使用某种api?或者有没有办法获取HTML的当前页面?我更喜欢后者,因为它似乎不会那么麻烦。谢谢!
答案 0 :(得分:3)
我在我的一个应用中使用此方法:
private static string RetrieveData(string url)
{
// used to build entire input
var sb = new StringBuilder();
// used on each read operation
var buf = new byte[8192];
try
{
// prepare the web page we will be asking for
var request = (HttpWebRequest)
WebRequest.Create(url);
/* Using the proxy class to access the site
* Uri proxyURI = new Uri("http://proxy.com:80");
request.Proxy = new WebProxy(proxyURI);
request.Proxy.Credentials = new NetworkCredential("proxyuser", "proxypassword");*/
// execute the request
var response = (HttpWebResponse)
request.GetResponse();
// we will read data via the response stream
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.ASCII.GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
} while (count > 0); // any more data to read?
}
catch(Exception exception)
{
MessageBox.Show(@"Failed to retrieve data from the network. Please check you internet connection: " +
exception);
}
return sb.ToString();
}
您必须只传递您需要检索代码的网页的网址。
例如:
string htmlSourceGoggle = RetrieveData("www.google.com")
注意:如果您使用代理访问互联网,则可以取消注释代理配置。将代理地址,用户名和密码替换为您使用的代理地址,用户名和密码。
用于通过代码登录。检查一下:Login to website, via C#