C#如果网页或URI的大小不足,如何下载?

jon*_*333 0 c# c#-4.0

我想看看C#中是否有一种方法只能下载网页的html,如果网页大小在N字节以下?我们希望存储具有特定状态代码的页面输出,但仅限于网页上的HTML小于N个字节.

Vla*_*den 6

使用HttpWebRequestMethod ="HEAD",您将能够获取页面标题信息,并且不会加载整个页面,这要快得多.之后你的页面的大小,你可以决定你是否想加载页面或没有,在那里你可以使用Web客户端

就像Jon指出的那样,内容长度可能不存在,在这种情况下,将返回-1.如果是这种情况,您将需要从那里获得整页并检查页面大小.

void Main()
{
    const long PageSizeLimit = 1000000;
    var url = "http://www.stackoverflow.com";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "HEAD";
    long pageSize;
    string page;

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        pageSize = response.ContentLength;
    }

    // if content lenth is not present -> get full page
    if (pageSize > 0 && pageSize < PageSizeLimit)
    {
        page = DownloadPage(url);
        ProcessPage(page);
    }
    else
    {
        page = DownloadPage(url);

        if (page.Length < PageSizeLimit)
        {
            ProcessPage(page);
        }
    }
}

public string DownloadPage(string url)
{
    using (var webClient = new WebClient())
    {           
        return webClient.DownloadString(url);
    }
}

public void ProcessPage(string page)
{
    // do your processing
}
Run Code Online (Sandbox Code Playgroud)