当前位置:编程学习 > C#/ASP.NET >>

C# WebClient获取网址源代码时,如果目标网站延迟不能获取其源码,该什么弄?是设置延时还是怎么弄?


string GetHtml(string url, string charSet)
        {
            string strWebData = "";
            try
            {
                WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 
                // 需要注意的: 
                //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 
                //这是就要具体问题具体分析比如在头部加入cookie 
                // webclient.Headers.Add("Cookie", cookie); 
                //这样可能需要一些重载方法。根据需要写就可以了 

                //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 
                myWebClient.Credentials = CredentialCache.DefaultCredentials;
                //如果服务器要验证用户名,密码 
                //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 
                //myWebClient.Credentials = mycred; 
                //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 
                byte[] myDataBuffer = myWebClient.DownloadData(url);
                strWebData = Encoding.Default.GetString(myDataBuffer);

                //获取网页字符编码描述信息 
                Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
                string webCharSet = charSetMatch.Groups[2].Value;
                if (charSet == null || charSet == "")
                    charSet = webCharSet;

                if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
                    strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);

            }
            catch (Exception)
            {
                return "网站打不开";
            }
            return strWebData;
        }




有时候会因为网速问题,下载不到网址的源代码,该方法还需如何改进,请大侠指点一二、 --------------------编程问答-------------------- --------------------编程问答--------------------
引用楼主  的回复:
C# code

string GetHtml(string url, string charSet)
        {
            string strWebData = "";
            try
            {
                WebClient myWebClient = new WebClient(); //创建WebC……

不错,最近我也用了类似的代码 --------------------编程问答-------------------- 大侠都跑去那了? --------------------编程问答-------------------- --------------------编程问答-------------------- 可以考虑使用Webbrowser控件,这个控件webbrowser_DocumentCompleted的事件可以判断页面是否加载完毕,如果加载完毕webbrowser.document.body.innerhtml可直接获取源码
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,